Browsing the blog archives for Januar, 2009

I18nifizierte Rails-Views

Neu in Edge Rails:

1
2
3
4
5
6
7
Add localized templates
 
  # Default locale
  app/views/messages/index.html.erb
 
  # I18n.locale is set to :da (Danish)
  app/views/messages/index.da.html.erb

Wird auch langsam Zeit!

1 Comment Posted in Programmierspaß
Tagged
Ein kleiner Helper für Seitentitel

Wie wär’s mit einem kleinen Helper zum Setzen des Seitentitels, der sowohl einen String als auch einen Block (mit HTML, das dann rausgesanitized wird) entgegen nimmt?

1
2
3
4
5
6
7
def set_page_title(title = nil, &block)
  if block_given?
    html = capture(&block)
    concat(html)
  end
  content_for(:title, title || strip_tags(html))
end

In einer HAML-View setzt man den Titel der Seite dann so:

1
- set_page_title "Neuer User"

Oder mit einem Block, der auch ausgegeben wird (aber im Titel werden alle HTML-Tags entfernt):

1
2
3
4
- set_page_title do
  %h1
    %strong Ein neuer User.
    Wie spannend!

Den Seitentitel kann man dann per yield :title ausgeben (idealerweise irgendwo im <title>-Tag.

Warum wird der Seitentitel überhaupt in einer View gesetzt? Weil er meiner Meinung nach die Angelegenheit eben dieser ist, und nicht des Controllers. So!

Update: mein Kollege Pascal wies mich völlig zurecht darauf hin, dass man den fertigen Titel konsequenter Weise per content_for und yield statt einer Instanzvariable übergeben sollte. Habe den Code entsprechend angepasst.

1 Comment Posted in Programmierspaß
Tagged
E-Mail-Verifizierung in Rails

In meiner neuen Anwendung will ich auf den langweiligen Aktivierungs-Link-Krams verzichten, der per Mail verschickt wird — neue User sind sofort eingeloggt und aktiviert. Sie erhalten trotzdem einen Link per E-Mail, der die Adresse verifizieren soll — dies aber nur, damit ich E-Mail-Benachrichtigungen nicht an die falschen User oder nicht existierende Adressen schicke. Carlo hat ein Gem gefunden, das mir bei der Überprüfung des letzten Punkts hilft:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class User < ActiveRecord::Base
 
  validates_uniqueness_of :email, :case_sensitive => false
  validate :valid_email?
 
private
 
  def valid_email?
    address = EmailVeracity::Address.new(email)
 
    unless address.valid?
      errors.add(:email, address.errors.join(", "))
    end
  end
 
end

Das ganze heißt email-veracity und liegt hier [github].

Carlo stürzt sich gerade in die wundervolle Welt von Rails und bloggt auf rooohby über all die kleinen und großen Dinge, die er lernt.

No Comments Posted in Programmierspaß
Tagged ,
Hacking aufeinander.de 3.0

Jetzt ist das Teil schon über ein Jahr offline — höchste Zeit, dass ich mal wieder Zeit in mein kleines Dauerprojekt aufeinander.de investiere! Habe über die letzten Wochen ein bisschen gehackt und werde das hoffentlich noch bis zu einem Punkt fortsetzen, an dem ich das Teil auch online stellen kann. Jetzt, wo ich mein Blog reaktiviert habe, kann ich ja mal etwas über die Entwicklung schreiben. w00t!

github und Pivotal Tracker

Endlich komme ich dazu, das großartige github.com für ein eigenes Projekt zu benutzen — wenn ich auch aktuell der einzige Entwickler bin. Außerdem hat mir mein Kollege Ali den Pivotal Tracker empfohlen, einen Issue- bzw. Story-Tracker für SCRUM-basierte Projekte. Und woah, das Teil rockt! Sowohl von Funktionalität als auch UI her super, und dazu auch noch kostenlos. Kann ich uneingeschränkt empfehlen.

Rails 2.2

Das neue aufeinander.de ist mein erstes Projekt mit Rails 2.2, und damit auch das erste, in dem ich die neue Internationalisierungs-API ausprobieren kann. Die mal echt super geworden ist! Neue Locales in die Anwendung zu integrieren könnte einfacher nicht sein — endlich muss man nicht mehr neidisch auf andere Frameworks schauen oder auf in den meisten Fällen arg durchwachsene Third-Party-Plugins zurück greifen.

(Hat schonmal jemand in den Quellcode von Ruby-GetText geschaut? Meine Herren, pfui…)

Für die Views kommen wieder einmal HAML und SASS zum Einsatz, und ich freue mich schon auf das vor kurzem für Rails 2.2 angepasste FlexImage.

Für die automatisierten Tests verzichte ich dieses Mal auf die üblichen Verdächtigen (shoulda, test/spec, rspec) und bleibe bei Test::Unit mit den von Rails mitgebrachten Helferlein. Statt Fixtures setze ich machinist (zusammen mit faker und random_data) zum Generieren von Testdaten ein (dazu schreibe ich später noch etwas), irgendwann wird sich wahrscheinlich auch noch mocha hinzu gesellen.

Und weiter geht’s!

Genug technisches Gefasel. Mal schauen, wann ich etwas online stellen kann. Werde hoffentlich über die nächsten Wochen hier und da etwas Zeit finden, ein bisschen zu hacken, vielleicht ja auch bei den total superen Happy Hacking-Sessions mit den werten Kollegen. Drückt die Daumen!

7 Comments Posted in Meine Projekte, Programmierspaß
Tagged , , , , ,
2009 wird alles anders

Hat eigentlich gar nichts mit 2009 zu tun, sondern mit einer OS X-Neuinstallation, die ich vor ein paar Wochen auf meinem iMac durchgeführt habe. Das Ding stand seit meiner Flucht aus England in einem Umzugskarton. Und der stand bis vor kurzem noch in England. Jetzt habe ich die Kiste endlich wieder (den Karton auch) und habe aus Freude ein frisches OS X installiert. Ja, genau so verhält sich das!

Aber worauf ich eigentlich hinaus wollte: auf dem neuen System will ich mal ein paar Dinge anders machen “als sonst”. Aktuell wären das:

  • kein Growl! Growl ist super, aber… nein. Moment! Warum ist Growl eigentlich super? Klar, die kleinen Notification-Fensterchen sind hübsch anzusehen. Aber in ca. 3 Jahren Growl-Nutzung kann ich mich nicht an einen Moment erinnern, in dem mir das Teil tatsächlich einen Nutzen gebracht hat. Im Gegenteil, ich habe immer wieder Anwendungen separat deaktivieren müssen, weil sie mich mit ihren Growl-Benachrichtigungen nervten. Das kann ja nun auch nicht Sinn der Sache sein. Also wird Growl dieses Mal gar nicht erst installieren, auch wenn ich von jedem zweiten Tool dazu genötigt werde.
  • kein Quicksilver/Launchbar! Mit Quicksilver steh ich schon lange auf dem Kriegsfuß, zu oft ist es mir abgeschmiert. Launchbar gefiel mir besser, obwohl es im Gegensatz zu Quicksilver Geld gekostet hat. Aber letztendlich habe ich beide 99% der Zeit nur als Anwendungs-Launcher benutzt. Und auch wenn sie nur als Anwendungs-Launcher noch deutlich besser als das in OS X eingebaute Spotlight sind… ist dieses (zumindest in Leopard) immer noch gut genug. Und das reicht mir, um nicht noch ein weiteres Tool auf meinem System laufen zu haben, welches ständig meinen ganzen Scheiß indizieren muss. Und auf die Hacks, die nötig sind, um Spotlight zu deaktivieren, habe ich erst recht keine Lust. Also spare ich mir den Ärger und bleibe bei dem, was OS X von Haus aus mitbringt.

Oh, und ich will mal wieder mehr bloggen. Natürlich nur, weil man trotz Wirtschaftskrise gut laufende Blogs für viel Geld verkaufen kann. Alleine und ausschließlich aus diesem Grund. Ich bin halt ‘ne ehrliche Haut.

5 Comments Posted in Verschiedenstes
Tagged , , ,