Ein Kollege hat sich in unserem Redmine eine benutzerdefinierte Abfrage für Abrechnungen gebastelt. Als er aus der Anzeige heraus dann ein PDF genieren wollte, bekam er nur die Error Page von Redmine zu sehen. Als Fehler bekam ich im Log folgendes:
ArgumentError (invalid byte sequence in UTF-8):
lib/plugins/rfpdf/lib/tcpdf.rb:3037:in `gsub'
lib/plugins/rfpdf/lib/tcpdf.rb:3037:in `escape'
lib/plugins/rfpdf/lib/tcpdf.rb:3028:in `escapetext'
lib/plugins/rfpdf/lib/tcpdf.rb:1748:in `Cell'
lib/plugins/rfpdf/lib/tcpdf.rb:1968:in `Write'
lib/plugins/rfpdf/lib/tcpdf.rb:3530:in `block in writeHTML'
lib/plugins/rfpdf/lib/tcpdf.rb:3501:in `each'
lib/plugins/rfpdf/lib/tcpdf.rb:3501:in `writeHTML'
lib/plugins/rfpdf/lib/tcpdf.rb:3612:in `writeHTMLCell'
lib/redmine/export/pdf.rb:141:in `RDMwriteHTMLCell'
lib/redmine/export/pdf.rb:483:in `block in issues_to_pdf'
app/helpers/issues_helper.rb:29:in `block in issue_list'
app/helpers/issues_helper.rb:25:in `each'
app/helpers/issues_helper.rb:25:in `issue_list'
lib/redmine/export/pdf.rb:444:in `issues_to_pdf'
app/controllers/issues_controller.rb:93:in `block (2 levels) in index'
app/controllers/issues_controller.rb:86:in `index'
Es stimmte also etwas mit der Codierung nicht. Nun sah ich das in manchen Beschreibungen U+FFFD Charaktere (Unicode Replacement Charaktere) enthalten waren. Als ich dann mal nach dem Problem suchte in Bezug auf das PDF Plugin von redmine, fand ich dann auch einen entsprechenden Forumpost. Also hab ich kurzer Hand, wie beschrieben mal die Datei gepatcht:
Anschließend funktionierte das PDF erstellen wieder ohne Probleme. In neuere Redmine Versionen ist dies natürlich schon behoben, die PPA Version hat aber nie ein Update erfahren, weswegen ich diese auch demnächst ersetzen werde.
Gestern habe ich zum testen ein Plugin installiert, welches bei mir allerdings nur zu Error Meldungen über Error Meldungen in Error Meldungen führte. Ja ich weiß, redmine hat auch nenn Dev Environment, ich habe auch daraus gelernt…
Jedenfalls nachdem ich alles zurück gerollt hab, stellte ich zu meinem erstaunen fest das im Redmine spezielle Funktionen nicht mehr funktionieren. Hier mal paar Beispiele:
Checklisten Plugin: Anlegen von Punkten nicht mehr durch Enter möglich, stattdessen tauchen nun Speichern und Abrechen Buttons auf die aber nicht funktionieren
Agile Plugin: Zeigt nur noch kaputte Task Charts an
Plugins wie das Redmine CRM People und Contacts Plugin können die Default Avatare nicht mehr finden
Im production.log von Redmine zeigte sich dann bei jedem Aufruf, von nahezu jedem Plugin folgender Fehler. Ist hier ein Bsp. von Contacts
Die Fehlermeldung ist dabei für jedes Plugin identisch, nur der Pfad variiert halt. Also erstmal auf dem System rummgeschaut was das Problem sein könnte – Pfade, Rechte etc. gecheckt, alles beim alten. Plugins deinstalliert und neu installiert, genau der selbe Fehler. Lösung fand ich dann schließlich hier. Man muss Apache also mitteilen wo plugin_assets zu finden ist, also muss folgendes in der entsprechenden Apache Conf für die Seite ergänzt werden:
Alias "/plugin_assets/" /var/cache/redmine/default/plugin_assets/
Allow from all
Options -MultiViews
Require all granted
Was ich allerdings nicht verstehe ist, wieso dieses Problem vorher nicht auftauchtey, sondern erst nach einem fehlerhaften Plugin. Wenn da jemand vielleicht was genaueres weiß wäre ich hoch erfreut wenn dieser es mir verrät. :)
Ich habe gestern festgestellt das es bei Ubuntu 14.04.2 während der Installation von redmine-mysql zu einem Fehler kommt, weil während der Installation der activerecord-mysql-adapter noch nicht installiert ist. Die Meldung sieht dann so aus:
rake aborted!
Please install the mysql adapter: `gem install activerecord-mysql-adapter` (cannot load such file -- mysql)
Wenn ihr nun aber versucht das Gem zu installieren werdet ihr mit einem Error abgespeist, der in etwa so aussieht:
Building native extensions. This could take a while...
ERROR: Error installing activerecord-mysql-adapter:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from extconf.rb:5:in `'
Gem files will remain installed in /var/lib/gems/1.9.1/gems/mysql-2.9.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/mysql-2.9.1/ext/mysql_api/gem_make.out
Und zwar benötigt ihr zum Gem installieren das Paket ruby1.9.1-dev. Neben diesem müsst ihr noch make und libmysqlclient-dev installieren sonst lauft ihr direkt in die nächsten Error Meldungen:
apt-get install ruby1.9.1-dev make libmysqlclient-dev
Danach könnt ihr nun wie in der ersten Meldung beschrieben das Gem mittels
Am gestrigen Abend, auf der ALUG , konnte ich direkt mit meinen gestern geschriebenen Artikel, zu der Redmine Problematik unter Ubuntu 14.04, Christoph helfen sein Redmine erfolgreich aufzusetzen. Da ich in dem Artikel allerdings nur den letzten Schritt genauer beschrieben hab, welcher bei mir am längsten gedauert hat, meinte Christoph ich solle doch mal die komplette Installation in einem Artikel beschreiben, denn vor besagtem Schritt kamen noch ein paar weitere, die so nicht im Redmine.org Wiki, unter Installation aufgeführt sind. Die ersten Schritte kann man jedoch genau wie im Wiki beschrieben durchführen:
Installation von apache2 inkl. Passenger Mod und mysql-server:
Solltet ihr bei Ubuntu 14.04.2 hier in einem Fehler laufen, der euch mitteilt das ihr doch bitte den activerecord-mysql-adapter installieren sollt -> Guckt ihr hier.
Nach der Installation linken wir das public Verzeichnis von Redmine nach /var/www:
ln -s /usr/share/redmine/public /var/www/redmine
Als nächstes fügen wir in der Datei /etc/apache2/mods-available/passenger.conf hinzu:
PassengerDefaultUser www-data
In der Datei /etc/apache2/sites-available/000-default.conf folgendes ergänzen:
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
In apache2 Version 2.4.7 liegt die Testseite nicht mehr unter /var/www/index.html sondern nun einen Ordner tiefer unter /var/www/html. Deshalb müsst ihr, wenn ihr die 000-default.conf nutzt, den DocumenRoot ändern nach:
DocumentRoot /var/www
Wenn es bei euch nicht schon während der Installation geschehen ist, müsst ihr nun noch das Passenger Modul laden und apache2 einmal neu starten:
a2enmod passenger
service apache2 restart
So laut den Anleitungen von redmine.org und ubuntuusers.com war es das nun. Ich denke aber das beide noch auf 12.04 basieren, denn soweit ich mich erinnern kann, kam da wirklich nicht mehr viel.
Ruft man nun Redmine im Browser auf, kommt eine Ruby Fehlerseite die einem mitteilt das Bundler benötigt wird. Soweit ich weiß war es bei früheren Versionen nicht nötig diesen nach zu installieren, da er bereits bei der allgemeinen Installation mit kam. Also Bundler installieren:
gem install bundler
So nun kommt man zumindest schonmal auf die Redmine Seite (Login übrigens admin admin, falls das jemand nicht wissen sollte) und auf den ersten Blick scheint auch erstmal alles zu laufen. Fängt man allerdings an Einstellungen zu tätigen oder Projekte anzulegen etc., merkt man sehr schnell das da etwas noch nicht stimmen kann, denn er wird nur einen Internal Server Error gemeldet:
Internal error An error occurred on the page you were trying to access.
If you continue to experience problems please contact your Redmine administrator for assistance.
If you are the Redmine administrator, check your log files for details about the error.
Im Log stand folgendes:
Processing by ProjectsController#new as HTML
Current user: admin (id=1)
Rendered projects/_form.html.erb (19.1ms)
Rendered projects/new.html.erb within layouts/base (23.2ms)
Completed 500 Internal Server Error in 177.2ms
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):
46: <% @trackers.each do |tracker| %<
47:
51: <% end %>
52: <%= hidden_field_tag 'project[tracker_ids][]', '' %>
app/views/projects/_form.html.erb:49:in `block in _app_views_projects__form_html_erb___3771736160522816434_58407040'
app/views/projects/_form.html.erb:46:in `each'
app/views/projects/_form.html.erb:46:in `_app_views_projects__form_html_erb___3771736160522816434_58407040'
app/views/projects/new.html.erb:4:in `block in _app_views_projects_new_html_erb___2519767256062977845_56777180'
app/helpers/application_helper.rb:1042:in `labelled_form_for'
app/views/projects/new.html.erb:3:in `_app_views_projects_new_html_erb___2519767256062977845_56777180'
Er hat also irgendwelche Probleme mit inkompatiblen Kondierungen. So sieht das zumindest für mich aus. Die Recherche zeigte das hier die Änderung des MySQL Adapters in der Datei /etc/redmine/default/database.yml Besserung bringen soll. Man ändert also folgende Zeile in:
production:
adapter: mysql2
Da nur das Gem für den Adapter mysql installiert ist müssen wir nach das für mysql2 installieren. Davor müssen allerdings noch 3 Pakete nachinstalliert werden:
apt-get install libmysqlclient-dev make ruby-dev
Ob jetzt das Paket make gebraucht wird weiß ich gar nicht genau. Wenn man den Adapter über gem install installiert brauchen man ihn jedenfalls. Wir benutzen dafür allerdings Bundler, denn mit gem install mysql2 erreicht man gar nichts. Man wechselt nun in das Verzeichnis /usr/share/redmine und fügt hier am Ende der Datei Gemfile folgendes ein:
gem 'mysql2'
Im Anschluss führt man in dem Verzeichnis
bundle update
aus, welches dann das mysql2 Gem installiert. Nun startet man noch einmal den apache2 neu und schon ist es geschafft. Redmine sollte nun laufen.
Ich habe gerade ein neues Redmine aus dem PPA ppa:ondrej/redmine installiert, welches auch nach der Installation erstmal zu laufen schien. Wollte man jedoch z.B. ein neues Projekt anlegen oder an der Konfiguration rummstellen, bekam man die für Redmine typische Seite, wenn man etwas falsch konfiguriert hat. Im Log sagte er mir folgendes:
Processing by ProjectsController#new as HTML
Current user: admin (id=1)
Rendered projects/_form.html.erb (19.1ms)
Rendered projects/new.html.erb within layouts/base (23.2ms)
Completed 500 Internal Server Error in 177.2ms
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):
46: <% @trackers.each do |tracker| %>
47: <label class="floating">
48: <%= check_box_tag 'project[tracker_ids][]', tracker.id, @project.trackers.include?(tracker), :id => nil %>
49: <%=h tracker %>
50: </label>
51: <% end %>
52: <%= hidden_field_tag 'project[tracker_ids][]', '' %>
app/views/projects/_form.html.erb:49:in `block in _app_views_projects__form_html_erb___3771736160522816434_58407040'
app/views/projects/_form.html.erb:46:in `each'
app/views/projects/_form.html.erb:46:in `_app_views_projects__form_html_erb___3771736160522816434_58407040'
app/views/projects/new.html.erb:4:in `block in _app_views_projects_new_html_erb___2519767256062977845_56777180'
app/helpers/application_helper.rb:1042:in `labelled_form_for'
app/views/projects/new.html.erb:3:in `_app_views_projects_new_html_erb___2519767256062977845_56777180'
Damit konnte ich erstmal nix anfangen. Ich seh das er irgendwelche Probleme mit den Kodierungen hat, das wars aber auch schon. Nach kurzer Suche bei Google war die Lösung gefunden – den Datenbank Adapter unter /etc/redmine/default/database.yml von mysql in mysql2 ändern. Das kam mir sogar noch aus vorherigen Redmine Installationen bekannt vor. Nachdem das geändert wurde, musste nun natürlich auch noch das entsprechende Ruby Gem installiert werden:
apt-get install libmysqlclient-dev make ruby-dev
gem install mysql2
Die Pakete libmysqlclient-dev make und ruby-dev musste ich noch vorher installieren, sonst schlug die Installation des Ruby Gem’s fehl. Danach startete ich den apache2 neu und nun verlangte er das nächste Gem und zwar activerecord-mysql2-adapter. Also das auch noch installiert, apache2 Neustart und…..er will immer noch dieses Gem haben. Die Fehlermeldung sah wie folgt aus:
Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (cannot load such file -- mysql2)
Nachdem ich dann eine ganze Weile rummprobiert und gesucht habe fand ich die Lösung.
Also die beiden Gems erstmal wieder deinstalliert: