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
コメント をご覧ください。
サーバーを起動するシェルで環境変数を直接設定できます。
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']
。
いくつかのオプションがあります。
コマンドラインから環境変数を設定します。
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
別のアイデアがあります。上記のように、provider.yml
ファイルでキーと値を定義します。次に、これをenvironment.rb
に配置します(Application.initialize!
の呼び出しの前):
YAML.load_file("#{::Rails.root}/config/provider.yml")[::Rails.env].each {|k,v| ENV[k] = v }
その後、これらの環境変数は、初期化子間の順序依存関係なしでomniauth
初期化子で参照できます。