Aus gegebenem Anlass habe ich mich heute Morgen das erste Mal seit langem wieder mit dem Web-Framework Ruby on Rails aus der Küche von David Heinemeier Hansson (einer der Partner hinter 37signals) auseinandergesetzt.
Nachfolgend habe ich zusammengefasst, wie ich das Framework auf meinem heimischen Entwicklungsserver zum Laufen gekriegt habe.
Installation Ruby
(Ich folge der englischen Anleitung Debian Lenny – Ruby on Rails von SliceHost)
Zuerst lädt man Debian-Pakete herunter und installiert diese:
# apt-get install ruby-dev ruby ri rdoc irb libreadline-ruby libruby libopenssl-ruby sqlite3 libsqlite3-ruby libsqlite-dev libsqlite3-dev
Anschliessend lädt man die Quellen von RubyGems herunter und kompiliert diese (man sollte auf das vorkompilierte Debian-Paket verzichten weil es mit Version 1.2.0 unglaublich veraltet ist):
# cd /tmp # wget "http://rubyforge.org/frs/download.php/74234/rubygems-1.5.2.tgz" # tar xvzfz rubygems-1.5.2.tgz # cd rubygems-1.5.2 # ruby setup.rb
Nun noch die obligatorischen Update-Anweisungen, die man sich als Linux-Benutzer von vielen Paketmanagern kennt, und dann ist man bereit:
# gem update
Bei mir erhielt ich bei der Ausführung von gem update folgende Fehlermeldung zu Gesicht:
# gem -v /usr/bin/gem:10: undefined method `manage_gems' for Gem:Module (NoMethodError)
Der Anleitung unter RubyGems: undefined method ‘manage_gems’ for Gem:Module (NoMethodError) – easy fix folgend wurde ein veraltetes Binary installiert, welches zuerst mit einer aktuellen Version ersetzt werden muss:
# mv /usr/bin/gem /usr/bin/gem-backup # ln -s /usr/bin/gem1.8 /usr/bin/gem
Anschliessend aktualisiert man das System (nun hoffentlich erfolgreich):
# gem update # gem update --system
Notabene: Bei mir wurden keine Updates nachgeladen, alles war bereits auf dem neuesten Stand …
Installation sqlite3
Damit Ruby mit der Datenbank sqlite3 sprechen kann, muss ein entsprechender Treiber bereitgestellt werden. Falls bei
# gem install sqlite3
die Fehlermeldung
Fetching: sqlite3-1.3.3.gem (100%) Building native extensions. This could take a while... ERROR: Error installing sqlite3: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb extconf.rb:3:in `require': no such file to load -- mkmf (LoadError) from extconf.rb:3 Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3 for inspection. Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out
erscheint, hat man im obigen apt-get für die Grundinstallation vergessen, die Header-Pakete von Ruby zu installieren (via Stackoverflow). Dies holt man mit folgendem Befehl nach:
# apt-get install ruby-dev libsqlite3-dev
Installation MySQL-Treiber
Obwohl man Ruby (on Rails) natürlich auch mit sqlite3 benutzen könnte, ist der LAMP-Web-Entwickler primär mit MySQL vertraut — so kann diese Datenbank mit der ansprechenden GUI phpMyAdmin administriert werden und ist bei grösseren Datenmengen auch klar performanter als sqlite3.
Um den Treiber zu installieren, bemächtigt man sich folgender Debian-Pakete:
# apt-get install libmysql-ruby libmysqlclient-dev
Anschliessend ist
# gem install mysql
Problemlos möglich.
Installation Rails
Mit dem Ruby-Paketmanager gem kann man sich nun endlich Rails aus dem Netz herunterladen und installieren lassen:
# gem install rails
Fertig! Jetzt sollte man eine funktionierende Ruby on Rails-Installation auf dem Server liegen haben und man ist bereit, mit Bordmitteln das erste Projekt anzulegen. Wie dies genau vor sich geht, folgt in einem weiteren Artikel.
Ein Kommentar Kommentare
Nach dem ruby setup.rb erhielt ich die gems unter: /usr/bin/gem1.8
Daher funktioniert der Versionsaufruf so: gem1.8 -v
Die Zeilen:
# mv /usr/bin/gem /usr/bin/gem-backup
# ln -s /usr/bin/gem1.8 /usr/bin/gem
ersetzte ich durch:
# cp /usr/bin/gem1.8 /usr/bin/gem-backup
# ln -s /usr/bin/gem1.8 /usr/bin/gem
Danach erhielt ich mit: gem -v die Version (1.5.2)
Danach klappte auch:
# gem update
und
# gem update –system
und wurde auf die Version 1.6.0 aktualisiert.
(Ausgeführt unter Debian Mint 201101)