我正在关注rails cast#85 here以及stackoverflow here上标记的正确答案。
我正在尝试使用facebook" app_id"和" app_secret"在rails中设置为环境变量。
我的代码是:
初始化/ facebook.rb
FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]
配置/ facebook.yml
development:
app_id: abcdefg
app_secret: 123456
production:
app_id: abcdefg
app_secret: 123456
初始化/ omniauth.rb
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, FACEBOOK_CONFIG['abcdefg'], FACEBOOK_CONFIG['123456'], {:client_options => {:ssl => {:ca_file => Rails.root.join("cacert.pem").to_s}}}
end
当我在app_id和app_secret之前设置环境变量时,即当我尝试通过Facebook登录时FACEBOOK_CONFIG,它返回一个" app_id参数是必需的"信息。所以这种方式不起作用。我想知道是否有一些代码丢失或有人可以看到我做错了环境变量没有通过Facebook处理(他们之前没有任何ENV变量)。
答案 0 :(得分:1)
在rails console
尝试
<强> 修改 强>
require 'yaml'
yaml = YAML.load_file(File.expand_path("#{Rails.root}/config/facebook.yml"))
puts yaml
*编辑2 *
FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]
更改为:
FACEBOOK_CONFIG = YAML.load_file(File.expand_path("#{Rails.root}/config/facebook.yml"))[::Rails.env]