Probleme beim Redmine-Update… wieder mal

AlleJahrewieder
Mittlerweile versuche ich schon gar nicht mehr Redmine manuell zu aktualisieren. Da bin ich froh, dass sich jemand die Mühe gemacht hat, ein PPA zu erstellen. Nachdem ich nun mal wieder auf meine lokale Redmine-Installation, die seit Monaten nicht mehr funktionierte, zugreifen wollte, habe ich das PPA eingebunden, über apt-get ein Update gezogen und war angenem überrascht: auf den ersten Blick lief alles. Zumindest konnte ich mich einloggen und Tickets anlegen.
Einen gestern von einem Freund gemeldeten 500er Fehler des Servers konnte ich zunächst nicht reproduzieren. Als ich vor ein paar Stunden in einem der Projekte das Wiki aufmachen wollte, bekam aber auch ich einen 500er Fehler gemeldet. Ernsthaft? Ich bin drauf und dran meinen eigenen Bugtracker zu schreiben. Ernsthaft!

Im Log (/var/log/redmine/default/production.log) bekam ich folgendes zu sehen:

ActionView::Template::Error (incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)):
1:

2: < %= textilizable content, :text, :attachments => content.page.attachments,
3: :edit_section_links => (@sections_editable && {:controller => 'wiki', :action => 'edit', :project_id => @page.project, :id => @page.title}) %>
4:

app/helpers/application_helper.rb:1278:in `gsub'
app/helpers/application_helper.rb:1278:in `sanitize_anchor_name'
app/helpers/application_helper.rb:915:in `block in parse_headings'
app/helpers/application_helper.rb:912:in `gsub!'
app/helpers/application_helper.rb:912:in `parse_headings'
app/helpers/application_helper.rb:595:in `textilizable'
app/views/wiki/_content.html.erb:2:in `_app_views_wiki__content_html_erb___954583649471597808_70020928633860'
app/views/wiki/show.html.erb:44:in `_app_views_wiki_show_html_erb___2279963281657605262_70020928171660'
app/controllers/wiki_controller.rb:97:in `show'

Durch die Fehlermeldung fand ich folgendes Ticket, wo vorgeschlagen wurde, mysql2 als Adapter zu verwenden.

Also unter /etc/redmine/default/database.yml den Adapter geändert, so dass ich folgende Datei hatte:

config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: xxxxxxxx
password: xxxxxxxx
encoding: utf8

Server neu gestartet -> Fehlermeldung. mysql2 kennt er nicht. Ok, muss ich wohl noch installieren. Also “gem install mysql2″ ausgeführt, nur um folgenden Fehler zu erhalten:

Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h

StackOverflow kannte die Antwort darauf:

sudo apt-get install libmysqlclient-dev

sollte abhilfe schaffen. Und tatsächlich, ein “gem list|grep mysql” zeigte mir auch mysql2 an. Server neu gestartet -> neue Fehlermeldung: “Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (mysql2 is not part of the bundle. Add it to Gemfile.)”

Also activerecord-mysql2-adapter installiert. Doch das brachte nichts. (Und ist scheinbar auch nicht nötig). Nach längerem Suchen, bin ich unter anderem über einen Post bei ServerFault gestolpert, den ich zwar nicht eins zu eins anwenden konnte, der mich aber letztendlich zum Ziel brachte.

In der Datei /usr/share/redmine/Gemfile habe ich als erste Zeile folgendes eingefügt: gem “mysql2″, so dass meine Datei wie folgt aussah:

gem "mysql2"

source 'https://rubygems.org'

local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exists?(local_gemfile)
puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
instance_eval File.read(local_gemfile)
end

# Load plugins' Gemfiles
Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file|
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
#TODO: switch to "eval_gemfile file" when bundler >= 1.2.0 will be required (rails 4)
instance_eval File.read(file), file
end

Und habe dann von der Konsole aus
bundle update
ausgeführt. Server neu gestaret -> läuft.

Ich hoffe, ich habe jetzt alle Schritte zusammenbekommen, kann das aber nicht versprechen, da ich in etwa zwei Stunden am herumprobieren war. Einige Kommandos musste ich als root ausführen, aber das wird euch schon die Konsole sagen, welche das sind.

Ein abhschließender Rant sei mir noch gestattet: ich mag Redmine. Wirklich. Aber dieses Ruby / Rails Gelöt ist doch echt das Letzte. Irgendwo habe ich bei meiner Lösungssuche den Beitrag eines Mitleidenden gelesen, der sich ebenfalls darüber beschwerte, dass bei ihm noch NIE ein Update von Redmine funktioniert hätte (leider finde ich den entsprechenden Post gerade nicht mehr). Und wenn ich daran denke, dass im Oktober die nächste Ubuntu Version kommen soll und danach wahrscheinlich mal wieder nichts funktionieren wird, bekomme ich schlechte Laune. Das ist einer der Gründe, warum wir bei mir auf der Arbeit immer noch auf Version 1.x festhängen. Ich kann die ganzen Ruby/Rails-Apologeten nicht verstehen, wenn die immer mit DEM Argument “Produktivität” kommen. Mag sein, dass man mit RoR schneller entwickeln kann, als mit anderen Stacks. Aber die, die eine Anwendung nur benutzen / administrieren wollen, ist es der reinste Horror. Und Redmine ist in meinen Augen, DAS Referenzprojekt schlechthin für RoR. Ubuntu ist nun auch nicht sonderlich exotisch und wenn ich schon ein PPA verwende, dann einfach deshalb, weil ich mich eigentlich nicht mehr händisch um solchen Kram kümmern möchte. Und wer mal in das Redmine-Forum respektive in den Redmine-Tickets stöbert (was wohl jeder nach einem Update zwangsläufig tut), stellt fest, dass ich mit meinen Problemchen nicht alleine dastehe. Und häufig steht unter geposteten Lösungsvorschlägen meist irgendwo ein verzweifelter Post von jemand, der sinngemäß schreibt: “Hilfe, das funktioniert bei mir aber nicht.”
Wird wohl doch Zeit, einen eigenen Bugtracker zu schreiben *sigh*

Ein Gedanke zu „Probleme beim Redmine-Update… wieder mal“

  1. Hallo Joachim,

    schöner Artikel, danke dir (im Namen von Redmine) für’s Teilen. Tatsächlich ist es so, dass Ruby on Rails eben immer noch eines der Frameworks ist, wo viele der Innovationen herkommen, die dann später, wenn sie sich bewährt haben, auch in anderen Frameworks und Sprachen aufgegriffen werden. Das wiederum bedeutet natürlich, dass da mehr “im Fluss” ist und sich vieles öfter ändert als woanders. Wir machen Rails seit 2005, glaub mir, es ist in den letzten Jahren schon deutlich besser geworden :-) Grundsätzlich verstehe ich aber deine Frustration. Bei Rails passiert mir das zwar nicht, aber ich habe ähnlich geflucht als ich neulich Sachen mit nodejs und npm gemacht habe, die ich sonst nicht so häufig benutze.

    Aber hier und da ändern sich eben Dinge, und meine Empfehlung wäre grundsätzlich, Redmine aus dem Stable-Branch im Repository zu installieren, keine Gems manuell zu installieren sondern brav Bundler zu benutzen. Alle OS-Pakete, VM-Stacks oder Installer die ich gesehen habe, versuchen meist zu viel selbst zu zaubern und machen damit meist alles noch schlimmer. Darüber hinaus können wir im Redmine-Forum meist viel besser weiterhelfen, wenn man mit einer “Standard”-Installation ankommt.

    Und (Achtung, Werbung!) wenn’s ganz arg wird oder man sich (im beruflichen Umfeld) einfach drauf verlassen möchte/muss, gibts natürlich auch noch gehostetes Redmine von uns. Wir helfen dann auch gerne beim Migrieren/Importieren bestehender Redmine-Daten…

    Viele Grüße

    Jan

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>