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.