Ruby on Rails und Subversion

Februar 11th, 2009 | Tags: , , , , , , , , , , ,
Anzeige

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

01Anmerkung: 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
  1. Subversion unter Debian installieren []
  2. Beispielhaft wird hier auf einem Linux-System gearbeitet. Die Alternativen Befehle für Windows sind u.a. ls = dir []
  3. Alle Zeilen mit $ beginnend sind eingaben in die Komandozeile. Alle Zeilen ohne, sind ausgaben auf der Komandozeile []
  4. Ich bitte vielmals um Entschuldigung, sollte mir im laufe der Zeit auch mal “Ruby-Projekt” rausrutschen []

Weiter lesen


Keine Kommentare
Kommentieren