blog.andreas-klingler.de

Notizen und Gedanken von Andreas Marc Klingler

Schlagwort: Ruby on Rails

Ruby on Rails, i18n: Fehlende Übersetzungen

Problem: In einem Ruby on Rails-Projekt wurden einige Übersetzungen nicht gefunden. Obwohl alles korrekt in den i18n-locale-Dateien eingetragen war, die auch alle geladen wurden.

Lösung: i18n-Locale-Dateien werden in Rails sequentiell eingelesen. Datei für Datei. Wird ein neuer Schlüssel gefunden, wird dieser definiert. Ist der Schlüssel aber schon vorhanden, wird er überschrieben. Gibt es also mehrere Schlüssel in mehreren Dateien (oder in einer Datei, das liefe auf das gleiche hinaus), sind in der Anwendung nur diejenigen Übersetzungen desjenigen Schlüssels vorhanden, der zuletzt eingelesen wurde. Fies.

 

Ruby on Rails: perform_caching und Flash-Meldungen

Bei einem Ruby-on-Rails-Projekt funktionierte lokal alles – aber in der Umgebung production (unter nginx) verschwanden die Flash-Meldungen (zum Beispiel nach dem Login über Devise) nicht mehr – beziehungsweise erst, als eine Seite gerändert wurde, die von einem anderen Controller verwaltet wird.

Da das Projekt Devise teilweise per Ajax nutzt und die einige Flash-Meldungen selbst ausgibt, dachten wir erst an alles andere; bis wir, als uns nach etlichen Stunden Debugging langsam die Optionen ausgingen, wir einfach mal den Inhalt der development– und production-Dateien in config/environments austauschten. Und siehe da, das Problem war weg.

Der Grund des Problems war folgende Einstellung:

config.action_controller.perform_caching = true

Nachdem wir sie in production auf false gesetzt haben, funktionierten die Flash-Meldungen wieder.  Rückblickend ist das eigentlich klar, aber darauf zu kommen, hat gedauert.

Merke daher: Gibt es Probleme mit dem Anzeigen von Flash-Meldungen, immer auch an diese Caching-Einstellung denken.