Setzen von Umgebungsvariablen in Rails 3 (Devise + Omniahuth)
Habe ich versucht herauszufinden, wie Ryan Bates in seinem Facebook-Authentifizierung screencastist die Einstellung der folgenden "FACEBOOK_APP_ID" und "FACEBOOK_SECRET" Umgebungsvariablen".
provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
Gibt es ähnliche-ish um Fragen, aber keine Antworten, dass ich in der Lage gewesen, zur Arbeit zu kommen, die auf Schienen 3.2.1.
UPDATE:
Mai 2013, meine bevorzugte Art und Weise zu handhaben ENV-Variablen ist über das Figaro gem
InformationsquelleAutor der Frage neon | 2012-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie werfen Sie einen Blick auf die Kommentare:
Können Sie entweder Umgebungsvariablen direkt auf der shell, wo Sie beginnen Ihr server:
Oder (eher hacky), konnten Sie Sie in Ihrem
config/environments/development.rb
:Eine alternative Möglichkeit
Allerdings würde ich weder. Ich würde eine config-Datei (sagen
config/facebook.yml
) enthält die entsprechenden Werte für jede Umgebung. Und dann laden Sie diese als Konstante in einem Initialisierer:config/facebook.yml
config/initializers/facebook.rb
Dann ersetzen
ENV['FACEBOOK_APP_ID']
im codeFACEBOOK_CONFIG['app_id']
undENV['FACEBOOK_SECRET']
durchFACEBOOK_CONFIG['secret']
.InformationsquelleAutor der Antwort iblue
Gibt es mehrere Optionen:
Setzen Sie die environment-Variablen aus der Befehlszeile:
Können Sie die obigen Zeilen in Ihrem
~/.bashrc
Festlegen der Umgebungsvariablen beim ausführen
rails s
:Erstellen Sie eine
.env
Datei mit:und verwenden Sie entweder Vorarbeiter (starten Sie Ihre app mit
foreman start
) oder die dotenv gem.InformationsquelleAutor der Antwort Stefan
Hier ist eine weitere Idee. Definieren Sie die Schlüssel und Werte in
provider.yml
- Datei, wie oben vorgeschlagen. Dann packen Sie diese in Ihreenvironment.rb
(vor dem Aufruf vonApplication.initialize!
):Dann diese Variablen können referenziert werden, in der
omniauth
Initialisierung ohne Bestell-Abhängigkeit unter intializers.InformationsquelleAutor der Antwort Jan Hettich