无法从Rails 3.1初始化程序访问环境变量

时间:2011-09-15 20:11:45

标签: ruby-on-rails-3 oauth environment-variables ruby-on-rails-3.1 omniauth

我有一个初始化文件,如下所示:

  Rails.application.config.middleware.use OmniAuth::Builder do  
    provider :facebook, '000000000000000', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  end

我的应用程序正常运作。

我不想硬编码凭据,因此我将其更改为:

  Rails.application.config.middleware.use OmniAuth::Builder do  
    provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
  end

我在bash中设置了相应的环境变量,并重新启动了我的应用程序。

当我使用rails控制台时,ENV ['FACEBOOK_KEY']和ENV ['FACEBOOK_SECRET']输出正确的值。

但是我的应用程序不再有效了,使用omniauth时会收到“Missing client_id参数”的响应。

{
   "error": {
      "message": "Missing client_id parameter.",
      "type": "OAuthException"
   }
}

我很困惑。

这不是访问环境变量的正确方法吗?它在初始化器中是否有另一种作用?

如何从初始化程序访问环境变量?

BTW我正在使用Ubuntu 11.04。

由于

1 个答案:

答案 0 :(得分:0)

关于在块中的内容会覆盖ENV和env。这是omniauth建议的方式:

https://github.com/intridea/omniauth/wiki/Dynamic-Providers