Ich beginne gerade damit Ruby on Rails zu erlernen. Und gerade als Anfänger passiert es sehr schnell, dass man mal einen Fehler macht, den man so ohne weiteres nicht wieder ausbessern kann. In so einem Fall (aber auch in jedem anderen) mit einer Versionierungsmöglichkeit, wie beispielsweise Subversion zu arbeiten. Ich habe Bereits ein paar mal über SVN geschrieben. Subversion bietet sich nicht nur an, wenn man es vermeiden will, Fehler in Programmen wieder ungeschehen zu machen, sondern auch beim arbeiten im Team ist SVN hilfreich. Wie ich so mitbekommen habe gehört die verbindung Rails & SVN zum defakto Standart. Darum will ich hier mal ein paar Sachen beschreiben, um auch Anfängern den Umgang mit diesen beiden Techniken zu erleichtern.
Zunächst einmal sollte natürlich SVN installiert sein. Darauf gehe ich hier nicht weiter darauf ein, denn es gibt ja bereits eine Anleitung von mir.1
Am besten sollte im Vorfeld überlegt werden, wie das Projekt heißen soll. In diesem Fall soll der Name des Projektes demo sein. Für dieses Projekt wird ein SVN-Projekt angelegt:23
$ svnadmin create /Pfad/zu/den/SVN/Projekten/demo $ ls /Pfad/zu/den/SVN/Projekten/demo
Anmerkung: Ich habe einmal den Fehler gemacht, mein SVN-Projekt Rails_demo zu nennen, obwohl mein Rails-Projekt4 nur demo hieß. Dies führt im späteren dazu, dass auch das Rails-Projekt Rails_demo heißt. Rails mag es aber scheinbar gar nicht, wenn Projekte nach dem erstellen umgenannt werden.
Nachdem das SVN-Projekt erstellt wurde, muss nun noch das Rails-Projekt erstellt werden:
$ rails demo --database=mysql create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create db create doc create lib create lib/tasks ...
Das ist ja alles nichts neues. Nun kann aber einiges Eingestellt werden, damit SVN auch optimal genutzt wird.
SVN Einstellen
$ cd demo $ svn import -m "initial import" . file:///Pfad/zu/den/SVN/Projekten/demo A demo/test A demo/test/unitL ... Commited revision 1.
Mit diesem Befehl wird das aktuelle Projekt in das SVN aufgenommen.
Anmerkung: Wichtig ist an dieser Stelle der PUNKT. Er bezieht sich auf den Ort, ab dem Importiert werden soll. der PUNKT ist dabei das aktuelle Verzeichnis.
Jetzt muss das gerade eingecheckte Projekt auch wieder ausgecheckt werden, um veränderungen vorzunehmen. Dazu muss das bestehende Rails-Projekt gelöscht werden. Keine Angst, es wurde je gerade gesichert, wem das aber zu heikel ist, dem wird empfohlen das Projekt nicht zu löschen sondern zu verschieben:
$ cd .. $ mv demo demo_backup
Nun muss das neue Projekt wieder ausgecheckt werden:
$ svn checkout file:///Pfad/zu/den/SVN/Projekten/demo ... Checked out revision 1. $ cd demo
In dem wieder zurückgeholten Projekt müssen nun einige Sachen eingestellt werden. Beispielsweise ist es nicht angebracht (gerade bei Teamarbeit) die Log-Dateien und die config/database.yml-Datei zu versionieren. Jedes Teammitglied hat seine Eigenen Logs und Datenbankeinstellungen. Gerade letzteres in verbindung mit migrations ist ein wansiniger Vorteil von Rails (wie ich finde).
Nun werden wir SVN anweisen die Log-Dateien zu entfernen.
$ svn remove log/* ... $ svn commit -m "removed log files" ... Commit revision 2. Nun muss SVN mitgeteilt werden, dass evtl. neu erzeigte Log-Files weiterhin ignoriert werden sollen. $ svn propset svn:ignore "*.log" log/ property 'svn:ignore' set on 'log' $ svn update log/ At revision 2. $ svn commit -m "svn ignore for new log/*.log files" ... Commited revision 3.
Ähnlich muss mit der config/database.yml Datei verfahren werden. Erst wird die Datei im SVN umgenannt, anschließend wird sie wieder ignoeriert (denn im Anschluss muss die database.yml-Datei “lokal” wieder hergestellt werden)
$ svn move config/database.yml config/database.original A config/database.original D config/database.yml $ svn commit -m "moved config/databas.yml to config/databas.original ... Commitet revision 4. $ svn propset svn:ignore "database.yml" config/ property 'svn:ignore' set on 'config' $ svn update config/ At revision 4. $ svn commit -m "Ignore database.yml" ... Committed revision 5. $ cp config/database.original config/database.yml
Das waren “auch” schon alle Vorbereitungen.
Nun müssen aber auch noch alle durch den (script/gernerate) Generator erstellten Dateien zum SVN hinzugefügt werden.
$ ruby script/generate controller foo --svn
Mit hilfe der Option –svn (oder -c) werden alle Dateien automatisch ins das SVN-Prjekt aufgenommen.
Rails Logo CC von http://railslogo.com/
Quellen:
- Rails Kochbuch : [rapid Web development mit Rails 1.2] / Rob Orsini. Dt. Übers. von Peter Klicman. – Dt. Ausg., 1. Aufl. : O’Reilly, 2007. – XVI
- wiki.rubyonrails.org Stand: 11.02.2009, Rev. 299
- Subversion unter Debian installieren [↩]
- Beispielhaft wird hier auf einem Linux-System gearbeitet. Die Alternativen Befehle für Windows sind u.a. ls = dir [↩]
- Alle Zeilen mit $ beginnend sind eingaben in die Komandozeile. Alle Zeilen ohne, sind ausgaben auf der Komandozeile [↩]
- Ich bitte vielmals um Entschuldigung, sollte mir im laufe der Zeit auch mal “Ruby-Projekt” rausrutschen [↩]
Unterstütze
Fatal error: Uncaught Error: Call to undefined function the_flattr_permalink() in /www/htdocs/w0108152/sebastian.thiele.me/wp-content/plugins/mystuff.php:22 Stack trace: #0 /www/htdocs/w0108152/sebastian.thiele.me/wp-content/themes/elegant-box/single.php(50): mySM() #1 /www/htdocs/w0108152/sebastian.thiele.me/wp-includes/template-loader.php(74): include('/www/htdocs/w01...') #2 /www/htdocs/w0108152/sebastian.thiele.me/wp-blog-header.php(16): require_once('/www/htdocs/w01...') #3 /www/htdocs/w0108152/sebastian.thiele.me/index.php(17): require('/www/htdocs/w01...') #4 {main} thrown in /www/htdocs/w0108152/sebastian.thiele.me/wp-content/plugins/mystuff.php on line 22