RedmineUpgrade – Ruby on Debian without leaving the rails

Auf der Suche nach “dem Ticketsystem” sind wir nach Scarab und Trac auf Redmine gestossen, einer Ruby-on-rails application, die ihren Zweck erfüllt und unseren Bedürfnissen durchaus gerecht wird. Aber da Redmine glücklicherweise auch weiterentwickelt wird, verlangt auch diese Applikation hin und wieder ein Upgrade (dieses mal war es ein Versionssprung von 0.8.7 auf 0.9.4).
Das Setup:

  • Debian GNU/Linux 5.0
  • Apache2.2 mit Phusion Passenger (a.k.a. mod_rails; mod_fcgi oder mod_fastcgi sind eher keine gelungen Apache-Module, das liegt wohl in der Natur von fcgi 😉 )

Nun sind schon bei vergangenen Updates verschiedene Stolpersteine ans Tageslicht gekommen, einige erwiesen sich allerdings als ein und der selbe:

An der Debian-Paket-Verwaltung vorbei(!) die richtigen Versionen (wie im Redmine-Upgrade-Tutorial genannt) installieren

  • rubygems – wichtig hierbei nicht das Paket “rubygems1.8” aus dem Debian-Repository verwenden sondern von Hand installieren:
    wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
    tar xzf rubygems-1.3.1.tgz
    cd rubygems-1.3.1
    sudo ruby setup.rb
    gem -v
  • Rake – auch hier gilt nicht das Paket “rake” v=0.7.1-1 aus dem Debian-Repository verwenden. Man nutze den “Ruby-way”:
    gem install rake -v=0.8.3
  • rails  – guess what… richtig, nicht das Paket “rails” aus dem Debian-Repository verwenden. Man nutze abermals den “Ruby-way”:
    gem install rails -v=2.3.5

Nachdem die Gleise damit verlegt sind, funktioniert auch der Upgrade-Guide wie gewünscht.
Wenn der kritische “point of no return”
rake db:migrate RAILS_ENV=production

überstanden ist, die neue Version von Redmine gestartet wurde, aber dann  Dinge wie:

  • “*** Exception NoMethodError in application (undefined method…”
  • “Premature end of script headers…”

im Apache-Errorlog auftauchen oder man die Meldung “application could not be started…” im Browser sieht,dann hilft ein Update von Phusion Passenger (auf Version 2.2.11 ):
gem install passenger
passenger-install-apache2-module

Sobald auch die letzten Anweisungen der Installation befolgt worden sind, können die Bugs kommen.