#200 Rails 3 Beta and RVM
Gibt es bessere Wege die 200. Episode zu feiern als einen ersten Eindruck von Rails 3 zu vermitteln? Die erste Betaversion von Rails 3.0 ist gerade veröffentlicht worden und in dieser Episode zeigen wir die Installation und Konfiguration. In den nächsten Episoden werden wir einen detaillierten Blick auf neue Funktionen werfen. Auch wenn gar keine Upgrades der Applikationen in naher Zukunft geplant sind, mit den neuen Funktionen herumzuprobieren ist die Installation der Betaversion wert.
Ruby aktualisieren
Rails 3 braucht Ruby 1.8.7 oder neuer, als ersten Schritt schaue nach welche Version du gerade verwendest indem du ruby -v
in einem Terminalfenster eingibst.
$ ruby -v ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
Dieser Computer verwendet Ruby 1.8.6, wir müssen auf eine neuere Version aktualisieren bevor wir weiter machen können. Wir werden rvm verwenden, den Ruby Version Manager. Mit rvm können wir auf einfache Weise verschiedene Versionen von Ruby verwenden und mit einem einzelnenen Kommando zwischen ihnen hin- und herschalten.
Solltest du Windows benutzen, dann musst du ruby manuell installieren, rvm ist dort nicht verfügbar. Unter Linux, OS X und anderen UNIX-basierenden Systemen können wir rvm mit den Anweisungen auf der rvm Installationsseite (engl) einrichten und dann folgendes Kommando absetzen:
mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
Nachdem die Kommandos ausgeführt wurden, werden Instruktionen angezeigt wie man die Installation abschliesst. Je nachdem, ob du bash oder zsh verwendest, gibt es verschiedene Hinweise. Nachdem wir die Instruktionen befolgt haben, müssen wir unser Terminalfenster schliessen und neu aufmachen, damit die Änderungen aktiv werden. Jetzt können wir rvm
ausführen und die Ruby Version installieren, die wir wollen.
Rails 3.0 benötigt Ruby 1.8.7, läuft aber auch mit Ruby 1.9.1. Wir sind abenteuerlustig und werden 1.9.1 installieren. Dazu geben wir folgendes ein:
$ rvm install 1.9.1
Dieser Befehl lädt die Version aus dem Netz, konfiguriert und installiert Ruby 1.9.1. Dieser Prozess dauert einige Zeit. Nach Abschluss können wir mit rvm list
feststellen, welche Ruby Versionen wir installiert haben.
noonoo:~ eifion$ rvm list ruby-1.9.1-p378 [ x86_64 ] system [ x86_64 i386 ppc ]
Wir haben Ruby 1.9.1 installiert und können mit folgendem Befehl darauf umschalten.
$ rvm 1.9.1 $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Die neue Ruby Version bleibt nur solange aktiv bis das Terminalfenster geschlossen wird. Um die neu installierte Version dauerhaft aktiv zu machen können wir den Parameter --default
zu rvm
dazuschreiben.
$ rvm 1.9.1 --default $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Jetzt können wir beliebig viele Terminalfenster auf- und wieder zumachen, Ruby 1.9.1 bleibt aktiv.
Falls wir irgendwann wieder zu der Ruby Version des Systems retour wollen, dann können wir rvm system
absetzen, mit dem Parameter --default
wird auch diese Änderung dauerhaft aktiviert.
Installation von Rails Beta
Jetzt haben wir eine Ruby Version mit der wir Rails 3 Beta verwenden können. Wir setzen die folgenden 2 Zeilen ab um Rails zu installieren.
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n gem install rails --pre
Weil wir eine noch nicht veröffentlichte Version von Rails verwenden wollen müssen wir die Abhöngigkeiten selbst installieren, die erste Zeile erledigt das. Bitte beachte dass wir kein sudo
vor den Befehl gem
setzen. Der Grund dafür ist die Verwendung von rvm. Die Seite rvm gems page gibt dazu weitere Informationen.
Nachdem beide Kommandos ausgeführt wurden haben wir Rails 3.0 installiert und können beginnen es auszuprobieren.
Rails 3.0 benutzen
Zuerst überprüfen wir ob Rails 3 wirklich installiert wurde mit rails -v
.
$ rails -v Rails 3.0.0.beta
Wenn du eine Fehlermeldung siehst dann schließe dein Terminalfenster und mache es neu auf und probiere es erneut. Wir werden nun eine einfache Applikation bauen die Spielstände abspeichert, wir nennen sie topscore
. Wir erstellen eine Rails 3.0 Applikation auf die gleiche Weise wie bisher:
rails topscore
Aber wenn wir in das Applikationsverzeichnis wechseln und versuchen den Server zu starten bemerken wir den ersten Unterschied.
¸ $ script/server -bash: script/server: No such file or directory
In dem Verzeichnis script
gibt es keine der bisher benutzten Skripte mehr, wie starten wir den Server? Wir benutzen rails
mit dem folgenden Parameter:
rails server
Die nach dem Ausführen des Kommandos angezeigten Fehlermeldungen nehmen wir in Kauf, wir arbeiten mit einer Beta-Release. In den Fehlermeldungen kann man ein fehlendes gem sqlite3-ruby
erkennen. Hier bitte beachten dass jede Ruby Version eigene Pakete von RubyGems verwendet. Deshalb müssen wir das sqlite3-ruby
gem selbst installieren, auch hier wieder ohne sudo
.
gem install sqlite3-ruby
Nach einem Start des Servers mit rails server
sehen wir eine Menge an Ausgaben und Warnings, aber der Server startet. Auf der Seite http://localhost:3000 sehen wir die Rails Default Seite.
Jetzt können wir anfangen unsere Applikation zu entwickeln. Wir starten mit einem Scaffold für ein Spiel-Model game
mit einem Attribut name
vom Typ string
.
rails generate scaffold game name:string
Wir lassen uns von den vielen Meldungen nicht abhalten und werden als nächstes die Datenbank migrieren.
rake db:migrate
Mit einem Browser auf die Applikationssseite zugegriffen, sehen wir die üblichen per Scaffold generierten Seiten, die du eventuell aus anderen Applikationen kennst.
Das war es mit unserer Applikation für heute, in späteren Episoden werden wir auf neue Funktionen von Rails 3 detaillierter eingehen, in der Zwischenzeit kannst du hier Rails 3.0 Release Notes einen Überblick über die Änderungen bekommen. Es gibt auch eine grosse Sammlung von Links über Rails 3 bei Ruby Inside.
Beim Arbeiten mit Beta-Software kann es vorkommen, dass Dinge nicht funktionieren und man Fehler und Probleme entdeckt. Falls dir das passiert, und du weißt, dass es nichts mit deinem einen Programmcode zu tun hat, dann überprüfe als allererstes die verwendeten Gems oder Plugins, die deine Applikation verwendet. Die Chancen sind hoch, dass dort das Problem liegt weil das Gem/Plugin (noch) nicht mit Rails 3 oder Ruby 1.9 zusammenarbeitet. Falls du ein Problem einem bestimmten Gem/Plugin zuordnen kannst, dann erstelle bitte ein Ticket auf der Gem Projektseite, damit der Fehler behoben werden kann.
Falls das Problem bei Rails selbst liegt kannst du beim Rails Lighthouse ein Ticket erstellen. Falls du einen Fehler meldest, beachte bitte die folgenden Tipps: Such in bestehenden Tickets, ob das Problem nicht bereits existent ist. Erstelle eine Anleitung zum reproduzieren des Fehlers, füge deine Fehlermeldungen und einen stack trace hinzu. Bitte notiere auch die Version von Ruby on Rails, die du zusammen mit den eingebundenen Gems verwendest, damit es leichter wird, das Problem nachzuvollziehen. Gut beschriebene Fehler in Tickets erleichtern die Behebung des Problems.
Gib etwas an Freie Software zurück
Wie du vielleicht schon bemerkt hast ist dies die 200. Episode. Um den 200. Screencast hervorzuheben startet Ryan Bates eine Kampagne namens “Give Back To Open Source”. Open Source Software entsteht durch viel Arbeit und ist frei erhältlich, somit macht es Sinn für jedermann, sich daran zu beteiligen und etwas zurück zu geben. Ryan’s Herausforderung an Dich ist es, Deine grösste Rails Applikation zu öffnen und die verschiedenen Plug-ins und Gems zu getrachten, die es benutzt. Viele Gems Projektseiten akzeptieren Spenden, und jeder auch noch so kleine Beitrag wird sehr geschätzt, da er dabei hilft, die Entwicklung des Gems am Laufen zu halten.
Eine andere Möglichkeit ist es, sich die Liste der Probleme für das Projekt anzusehen, sich damit zu beschäftigen, einen Bug zu beheben oder bei der Dokumentation zu helfen. Es liegt an Dir, Dich für eine Möglichkeit zu entscheiden, um beizutragen, aber es ist sehr erwünscht, da es der Rails Community hilft, voranzukommen.