Warum cachen meine Rails-Initialisierer ENV-Variablen in der Konsole (Foreman, Dev env)

8

Was als kleine Belästigung begann, ist jetzt zu Kopfschmerzen geworden. Ich baue eine Rails 4-App und verwende Foreman für mein Dev-Setup mit einer Procfile und .env-Datei zur Konfiguration. Wenn ich eine ENV-Variable in der .env-Datei anlege, wird sie von meiner App korrekt aufgenommen. In diesem Fall stelle ich einige ENV-Optionen für Paperclip in einem Initialisierer ein.

Das Problem tritt auf, wenn ich den Wert der ENV-Variablen ändere. Wenn ich in der Konsole ENV ["MY_VAR"] eintippe, wird der neue Wert angezeigt. Der Wert, der in meinem Initialisierer verwendet wurde, der vermutlich beim Starten der Konsole ausgeführt wurde, zeigt jedoch den alten Wert an! Nirgendwo in meinem Projekt ist der alte Wert irgendwo aufgeführt. Das führt mich zu der Annahme, dass die Umgebung irgendwie zwischengespeichert wird oder dass die env-Variablen in meine Shell exportiert werden. Mir gehen die Plätze aus, um zu schauen, also würde jede Hilfe sehr geschätzt werden! Ich entwickle auf einem Mac (10.9.4) mit Ruby 1.9.3-p374 und Rails 4.1.0.

Beispiel:

ROOT / .env

%Vor%

config / initializers / paperclip.rb

%Vor%

Wenn ich den Wert von S3_BUCKET in "newbucket" ändere und "foreman run rails c" oder "rails c" starte, um die Konsole zu betreten, passiert Folgendes:

%Vor%

Ich sollte erwähnen, dass dieses Verhalten auch in meinen Klassen auftritt, die ich in / lib eingefügt habe. Ich stelle mir vor, dass das alles auf etwas Dummes zurückzuführen ist, das ich übersehen habe. Irgendwelche Ideen?

    
Spencer 19.09.2014, 16:52
quelle

1 Antwort

24

Wenn Sie Rails 4 standardmäßig verwenden, wird es mit einem Juwel namens Spring geliefert, das vorgesehen ist < Machen Sie Ihr Leben einfacher, indem Sie eine Instanz Ihrer Anwendung im Hintergrund laden und neu laden, während sich Ihre Code- und Konfigurationsdateien ändern.

Spring überwacht jedoch nur die Standardkonfigurationsdateien von Rails. Daher müssen Sie Spring so konfigurieren, dass zusätzliche Dateien überwacht werden, die erneut geladen werden sollen.

Spring liest ~/.spring.rb und config/spring.rb für benutzerdefinierte Einstellungen. Sie können hinzufügen, fügen Sie die folgende Zeile in die Datei Ihrer Wahl, um Ihre .env -Datei für Änderungen zu sehen:

%Vor%

Weitere Informationen finden Sie in der Konfigurationsdokumentation zu Spring in der README-Datei.

    
fny 19.09.2014, 18:14
quelle