Mit Figaro und Geheimnisse.yml zu Verwalten Env Variablen
Ich habe eine rails 4.1 app und ich werde versuchen zu organisieren, meine env-Variablen. So jetzt habe ich ein Geheimnisse.yml-Datei in meinem config/Ordner. Ich habe auch installiert die figaro gem. Mein Ziel war es, alle meine env-Variablen in der Anwendung.yml (nicht geprüft in git) - Datei und verwenden Sie dann die Geheimnisse.yml (geprüft in git) - Datei zum zuordnen der Variablen aus der Applikation.yml der Anwendung. Wenn ich drucken Sie die Dateien mit Schienen.- Anwendung.Geheimnisse Es zeigt nur hashes, die wie folgt Aussehen:
:salesforce_username=>"ENV['SALESFORCE_USERNAME']"
Keiner meiner externen Dienste arbeiten mit dieser env-Variablen-setup. Wenn ich die Spuren, die tatsächlich ENV['ACCOUNT_ID'] übergeben werden, durch die in den Anfragen wie diese:
v2/accounts/ENV['ACCOUNT_ID']/envelopes
Zusätzlich, ich kann nicht auf mein env-Variablen mit Schienen.- Anwendung.Geheimnisse.account_id in meiner app.
Geheimnisse.yml
development:
account_id: <%= ENV['ACCOUNT_ID'] %>
Anwendung.yml
development:
ACCOUNT_ID: "123456"
Anwendung.rb
# preload tokens in application.yml to local ENV
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
config.merge! config.fetch(Rails.env, {})
config.each do |key, value|
ENV[key] = value.to_s unless value.kind_of? Hash
end
Du musst angemeldet sein, um einen Kommentar abzugeben.
The gem bietet einen generator:
Der generator erzeugt eine config/application.yml Datei und ändert die .gitignore - Datei, um zu verhindern, dass die Datei, die überprüft wird in einem git-repository.
Können Sie fügen Sie Umgebungsvariablen wie Schlüssel/Wert - Paare zu config/application.yml:
Den Umgebungsvariablen verfügbar sein wird, überall in Ihrer Anwendung als ENV-Variablen:
Dies gibt Ihnen die Bequemlichkeit der Verwendung der gleichen Variablen im code, ob Sie gesetzt, von der Unix-shell oder dem figaro gem config/application.yml. Variablen in der config/application.yml Datei überschreiben die environment-Variablen gesetzt, die in der Unix-shell.
In tests oder andere Situationen, in denen die ENV-Variablen nicht geeignet sein könnten, können Sie Zugriff auf die Konfigurations-Werte als Figaro-Methode Aufrufe:
Verwenden Sie die folgende syntax für die Einstellung der verschiedenen Anmeldeinformationen in Entwicklungs -, test-oder Produktionsumgebungen:
In diesem Fall
ENV["HELLO"]
produzieren "Entwickler" in Entwicklung "Benutzer" in der Produktion und die "Welt" sonst.Ihnen sagen, dass die ENV-Variablen "Durchlaufen, in der Anfragen", aber wenn ich mir deinen code-Schnipsel ich denke, die Variablen werden nicht immer erkannt wird als solche in den ersten Platz.
Wenn Sie wollen, um zu injizieren, eine variable in einen string, double-check, den Sie mithilfe des folgenden formats, vor allem die
#
und{}
:Generell, wenn Sie sich nicht sicher sind, welche Umgebungsvariablen gesetzt werden in einer bestimmten Umgebung, ist der einfachste Weg zu überprüfen ist, um die öffnung des Schienen-Konsole und Abfrage
ENV
etwa so: