Nächster Halt: Ruby on Rails 3.0

Warning message

Warning: This post is slightly older.

It may be that the content is out of date, links are outdated or that no one responds to new comments.

Mit Rails 3.0 ist ein großes, neues Release für das beliebte Ruby Framework im Anmarsch. Neben vielen Fehlerbehebungen gibt es auch viele neue Funktionen und Verbesserungen. Eine der größten Neuerung ist wohl die neue Abfragesprache für Active Record. Dazu gibt es einen verbesserten Router, der besonders gut RESTful Anwendungen abbilden kann und eine neue Mailer API. Mit dieser können dann auch endlich Multipart Nachrichten ohne Bauschmerzen versendet werden.

Die aktuelle Beta von Rails 3.0 ist noch nicht für produktive Anwendungen geeignet. Aber um sich schon einmal mit den neuen Möglichkeiten und Funktionen vertraut zu machen, kann ein früher Blick sicherlich nicht schaden. Zu beachten ist jedoch, dass die aktuelle Version und die neue Vorabversion von Ruby (als Grundlage für Ruby on Rails) nicht zeitgleich betrieben werden können. Daher ist die Installation über RVM (Ruby Version Manger) zu empfehlen.


rvm install 1.9.1
rvm 1.9.1
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem install rails --pre

Schon ist Rails 3.0 lauffähig und es kann eine neue Rails Anwendung erstellt oder bestehende portiert werden. Um zur aktuellen Ruby-Version zurückzukehren, muss »rvm system« im Terminal eingegeben werden. Wie genau eine bestehende Anwendung portiert werden kann, zeigt ein 25-minütiger Screencast bei PeepCode, der kostenlos erhältlich ist.

Die Neuerungen von Ruby on Rails 3.0

Active Record

Die wohl auffälligste Änderung von Rails 3.0 ist de neue Abfragesprache für Active Record. Statt bisher alle in eine »find«-Methode zu schreiben, werden die einzelnen Bestandteile einer Datenbankabfrage in einzelne Methoden zerlegt.


Books.find(:all, :order => "updated_at desc", :limit => 15) #-> Rails 2.x
Books.order("updated_at desc").limit(15) #-> Rails 3.x

Books.find(:first, :conditions => ["title = ?", 'Ruby 3.0'], :order => "updates_at desc") #-> Rails 2.x
Books.where("title = ?", 'Rails 3.0').last #-> Rails 3.x

Ein paar Beispiele für die neue Abfragesprache von Ruby on Rails 3.0

Aber keine Angst: Zumindest bis zur Version 3.1 von Rails soll die bisherige API weiter unterstützt werden.

Routing

Auch das Routing wurde etwas aufgeräumt und übersichtlicher gestaltet. Unter anderem wurde auf das »map« am Anfang einer Route verzichtet. Ansonsten gibt es viele neue Funktionen und Möglichkeiten, unter anderem lassen sich Requests besser nach bestimmten Mustern verarbeiten und Routes zuweisen.


map.root :controller => "pages", :action => "index" #-> Rails 2.x
root :to => "pages#index" #-> Rails 3.0

map.login "/login", :controller => "sessions", :action => "login" #-> Rails 2.x
match "/login" => "sessions#login", :as => :login #-> Rails 3.x

#-> Rails 2.x
map.resources :books, :collection => { :filter => :get } do |books|
books.resources :reviews
end

#-> Rails 3.x
resources :books do
get :filter, :on => :collection
resources :reviews
end

Code-Beispiele für die neue Routes API von Rails 3.0

Action Mailer

Obwohl die Entwicklung von Rails Anwendungen eher Spaß als Arbeit ist, waren der Versand von E-Mails bisher die am meisten gemiedene Aufgabe. Mit Rails 3.0 gibt es eine neue API, die den Versand von E-Mail vereinfachen soll. So gibt es jetzt einen eigenen Ort unter »app/mailers« und es werden bei Bedarf die E-Mails als Multipart (Text und HTML-Teil) versendet. Sehr schön finde ich es auch, dass ein Mail in Rails jetzt als Objekt behandelt wird:


Notifier.deliver_signup_notification(recipient) #-> Rails 2.x
Notifier.signup_notification(recipient).deliver #-> Rails 3.x

# Beispiel für eine Multipart E-Mail in Ruby on Rails 3.x
def multipart_email
mail(:to => recipient.email) do |format|
format.text { render :text => "Text-Alternative der E-Mail" }
format.html { render :text => "

Dies ist eine HTML-E-Mail

" }
end
end

Das sind so die größten Neuerungen von Ruby on Rails 3.0. Natürlich gibt es noch viele weitere zu entdecken. Zudem hat sich einiges unter der Oberfläche getan und die Geschwindigkeit von Rails wurde verbessert. Was sich alle genau ändert, wird im offiziellen Release Note verraten.

German | 09. March 2010
Stored in
Filled under

Add new comment