1.8 Neues in Rails 2.0.x 

Am 7. Dezember 2007 hat David Heinemeier Hansson die Fertigstellung von Rails 2.0 bekannt gegeben. Wir geben Ihnen hier eine kurze Übersicht über die Veränderungen in Rails 2.0.
Action Pack: Resources
In RESTful Rails haben sich die URLs verändert. Das Semikolon für benutzerdefinierte Methoden wurde entfernt und durch einen Slash ersetzt. Es heißt jetzt zum Beispiel employees/1/edit statt employees/1;edit.
Es können jetzt auch Namespaces eingesetzt werden. Damit wird es ziemlich einfach, Bereiche, wie zum Beispiel Admin-Bereiche, abzugrenzen.
Action Pack: Neue Dateiendungen
Die Dateiendung der Templates bestimmt jetzt, von welcher Template-Engine sie gerendert werden. Templates werden ab Rails 2.0 nach folgendem Format benannt: action.format.renderer . Die Standarddateiendung für HTML-Templates ist jetzt html.erb, die von der ERB-Template-Engine gerendert werden. Aus show.rhtml wird also show.html.erb . Es kann es jetzt auch ein Template show.csv.erb geben, das auch von der ERB-Template-Engine gerendert wird.
Action Pack: Vereinfachter Zugriff
Neue Konventionen vereinfachen in Controller und Views den Zugriff auf Ressourcen:
redirect_to(@person) link_to(@person.name, @person) form_for(@person)
statt wie bisher:
redirect_to(person_url(@person)) link_to(@person.name, person_url(@person)) form_for(:person, @person, :url => person_url(@person))
Action Pack: HTTP-Authentifizierung
Ein neues Modul ermöglicht es, auf sehr einfache Art und Weise eine HTTP-Authentifizierung einzusetzen.
Action Pack: Sicherheit
Mit Rails 2.0 wird es einfacher, sichere Applikationen zu erstellen. CRFS - und XSS -Attacken können besser unterbunden werden.
Action Pack: Ausnahmebehandlung
Auf Klassenebene steht die Methode rescue_from zur Verfügung, um Ausnahmen auf einer gemeinsamen Ebene deklarieren zu können statt pro Action.
Action Pack: Cookies und Sessions
Das Sessionhandling erfolgt in Rails 2.0 auf Cookie-Basis. Das heißt, es werden keine Session-Dateien mehr angelegt oder Sessions in der Datenbank gespeichert, sondern die Sessionwerte stehen in Form eines Hashs zur Verfügung. Das macht das Sessionhandling nicht nur sehr viel schneller als die traditionelle Art und Weise, Sessions zu speichern, sondern es erfordert auch keine Wartung. Es müssen keine Cron-Jobs mehr angelegt werden, um die Session-Dateien zu löschen.
Active Record: Performance
In ActiveRecord wurde ein Query Cache integriert, der Anfragen speichert und für darauffolgende gleiche Anfragen das Ergebnis aus dem Cache liefert. Auch die Geschwindigkeit von fixtures wurde sehr stark verbessert.
Active Record: Migration-Skripte
Die Syntax für Migration-Skripte wurde vereinfacht, und es ist möglich, Spalten vom gleichen Typ zusammenzufassen.
Active Record: Fixtures
Abhängigkeiten zwischen Fixtures über die ID abbilden zu müssen, war nicht immer einfach. Aber das hat sich in Rails 2.0 enorm verbessert. Es ist jetzt möglich, innerhalb eines Fixtures über den Namen auf ein anderes Fixture zuzugreifen.
Active Record: Funktionen in Plug-ins ausgelagert
ActiveRecord ist in Rails 2.0 um einiges schlanker geworden. Es wurden Funktionen wie acts_as_* als Plug-ins ausgelagert. Nach Installation der jeweiligen Plug-ins können die Funktionen wieder wie gewohnt verwendet werden.
Rails 2.0 beinhaltet standardmäßig nur noch die Datenbankadapter für MySQL, SQLite3 und PostgreSQL. Die Adapter der kommerziellen Datenbanken wurden in gem-Pakete ausgelagert. Nach der Installation des jeweiligen gem-Paketes können die Datenbankdapter wie gewohnt genutzt werden.
Webservices
Es wird wohl kaum überraschen, dass man sich in Rails 2.0 gegen Webservices mit SOAP und für den RESTful-Ansatz entschieden hat. ActionWebService gehört damit nicht mehr zum Standardpaket, kann aber als gem-Paket installiert werden.
Das ActiveResource -Framework wurde als beta ins Standardpaket aufgenommen. ActiveResource ist wie ActiveRecord, aber für Ressourcen. Es ist so konfiguriert, dass es nur mit Rails-Applikationen arbeitet, die dem Ressourcen-Ansatz folgen.
ActiveSupport
Die meisten Veränderungen in ActiveSupport sind Fehlerkorrekturen. Es kamen neue Methoden hinzu, wie Array#rand, um ein zufälliges Element aus einem Array auszulesen oder Hash#except um unerwünschte Schlüssel aus einem Hash zu filtern, und einige Erweiterungen für den Umgang mit Datumswerten.
ActionMailer
ActionMailer hat sich kaum verändert. Außer ein paar Bugfixes kamen alternative Templates und eine neue Testmethode assert_emails hinzu.
Rails: Debugger
Ab Rails 2.0 ist wieder ein Debugger in Rails enthalten. Um ihn einsetzen zu können, müssen Sie das RubyGems-Paket ruby-debug installieren.
Rails: Konfigurationsdateien
Vor Rails 2.0 wurde auch jede Art von einmaligen Konfigurationen innerhalb der environment.rb definiert. Jetzt können Sie diese Elemente in eigene Dateien im Verzeichnis config/initializers ablegen. Alle Dateien in diesem Verzeichnis werden automatisch geladen. Dadurch soll sichergestellt werden, dass nur die Standardeinstellungen innerhalb der environment.rb definiert werden.
Rails 2.0.2
Die wichtigste Änderung ab Rails 2.0.2 ist sicherlich, dass der Standard-Datenbankadapter nicht mehr MySQL, sondern SQLite3 ist. Eine Applikation, die eine MySQL-Datenbank nutzt, erzeugen Sie mit dem Befehl
rails -d mysql name_der_applikation.
Das alles und noch viel mehr bringt Rails ab der Version 2.0 an Veränderungen und Neuerungen mit sich. Wir freuen uns, Ihnen im Verlauf dieses Buchs das meiste davon zeigen zu können.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.