web-dev-qa-db-ja.com

Rails 3(Devise + Omniauth)での環境変数の設定

Ryan Batesの Facebook Authenticationスクリーンキャスト で、次の「FACEBOOK_APP_ID」と「FACEBOOK_SECRET」環境変数がどのように設定されているかを把握しようとしています。

provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']

似たような質問が周りにありますが、私がRails 3.2.1。

UPDATE:

2013年5月現在、ENV変数を処理するための私の好ましい方法は Figaro gem

53
neon

コメント をご覧ください。

サーバーを起動するシェルで環境変数を直接設定できます。

FACEBOOK_APP_ID=12345 FACEBOOK_SECRET=abcdef Rails server

または(かなりハッキー)、あなたのconfig/environments/development.rb

ENV['FACEBOOK_APP_ID'] = "12345";
ENV['FACEBOOK_SECRET'] = "abcdef";

別の方法

しかし、私はどちらもしません。設定ファイルを作成します(たとえばconfig/facebook.yml)これは、すべての環境に対応する値を保持します。そして、これを初期化子の定数としてロードします。

config/facebook.yml

development:
  app_id: 12345
  secret: abcdef

test:
  app_id: 12345
  secret: abcdef

production:
  app_id: 23456
  secret: bcdefg

config/initializers/facebook.rb

FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]

次に、ENV['FACEBOOK_APP_ID']によるコード内のFACEBOOK_CONFIG['app_id']およびENV['FACEBOOK_SECRET'] by FACEBOOK_CONFIG['secret']

118
iblue

いくつかのオプションがあります。

  • コマンドラインから環境変数を設定します。

    export FACEBOOK_APP_ID=your_app_id
    export FACEBOOK_SECRET=your_secret
    

    上記の行を~/.bashrcに入れることができます

  • Rails sの実行時に環境変数を設定します。

    FACEBOOK_APP_ID=your_app_id FACEBOOK_SECRET=your_secret Rails s
    
  • 次を使用して .env ファイルを作成します。

    FACEBOOK_APP_ID=your_app_id
    FACEBOOK_SECRET=your_secret
    

    Foremanforeman startでアプリを起動)または dotenv gemを使用します。

29
Stefan

別のアイデアがあります。上記のように、provider.ymlファイルでキーと値を定義します。次に、これをenvironment.rbに配置します(Application.initialize!の呼び出しの前):

YAML.load_file("#{::Rails.root}/config/provider.yml")[::Rails.env].each {|k,v| ENV[k] = v }

その後、これらの環境変数は、初期化子間の順序依存関係なしでomniauth初期化子で参照できます。

12
Jan Hettich