53

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

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

似たような質問があちこちにありますが、Rails 3.2.1 で作業することができた回答はありません。

アップデート:

2013 年 5 月の時点で、ENV 変数を処理するための私の好みの方法は、Figaro gemを使用することです。

4

3 に答える 3

119

コメントを見ることができます:

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

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']で置き換えますFACEBOOK_CONFIG['secret']

于 2012-07-25T11:43:43.703 に答える
29

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

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

    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
    

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

于 2012-07-25T11:51:28.083 に答える
12

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

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

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

于 2012-09-22T22:42:07.227 に答える