neo*_*eon 53 ruby-on-rails environment-variables railscasts omniauth ruby-on-rails-3
我一直试图弄清楚Ryan Bates在他的Facebook身份验证截屏中如何设置以下"FACEBOOK_APP_ID"和"FACEBOOK_SECRET"环境变量.
provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
Run Code Online (Sandbox Code Playgroud)
有类似的问题,但没有我能够在Rails 3.2.1上工作的答案.
更新:
截至2013年5月,我处理ENV变量的首选方法是通过费加罗宝石
ibl*_*lue 118
你可以看一下评论:
您可以直接在启动服务器的shell上设置环境变量:
FACEBOOK_APP_ID=12345 FACEBOOK_SECRET=abcdef rails server
Run Code Online (Sandbox Code Playgroud)
或者(相当hacky),你可以在你的config/environments/development.rb:
ENV['FACEBOOK_APP_ID'] = "12345";
ENV['FACEBOOK_SECRET'] = "abcdef";
Run Code Online (Sandbox Code Playgroud)
但是我不会这样做.我会创建一个配置文件(比如说config/facebook.yml),它保存每个环境的相应值.然后在初始化程序中将其作为常量加载:
config/facebook.ymldevelopment:
app_id: 12345
secret: abcdef
test:
app_id: 12345
secret: abcdef
production:
app_id: 23456
secret: bcdefg
Run Code Online (Sandbox Code Playgroud)
config/initializers/facebook.rbFACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]
Run Code Online (Sandbox Code Playgroud)
然后更换ENV['FACEBOOK_APP_ID']在你的代码FACEBOOK_CONFIG['app_id'],并ENV['FACEBOOK_SECRET']通过FACEBOOK_CONFIG['secret'].
Ste*_*fan 29
有几种选择:
从命令行设置环境变量:
export FACEBOOK_APP_ID=your_app_id
export FACEBOOK_SECRET=your_secret
Run Code Online (Sandbox Code Playgroud)
你可以把上面的行放在你的 ~/.bashrc
运行时设置环境变量rails s:
FACEBOOK_APP_ID=your_app_id FACEBOOK_SECRET=your_secret rails s
Run Code Online (Sandbox Code Playgroud)创建一个.env文件:
FACEBOOK_APP_ID=your_app_id
FACEBOOK_SECRET=your_secret
Run Code Online (Sandbox Code Playgroud)
Jan*_*ich 12
这是另一个想法.provider.yml如上所述,在文件中定义键和值.然后把它放在你的environment.rb(在通话之前Application.initialize!):
YAML.load_file("#{::Rails.root}/config/provider.yml")[::Rails.env].each {|k,v| ENV[k] = v }
Run Code Online (Sandbox Code Playgroud)
然后可以在omniauth初始化程序中引用这些环境变量,而在初始化程序之间没有任何顺序依赖性.
| 归档时间: |
|
| 查看次数: |
35697 次 |
| 最近记录: |