Rails:在哪里定义facebook app id,以便设计初始化程序和控制器可用。

时间:2012-04-30 13:15:21

标签: ruby-on-rails devise global-variables yaml omniauth

我正在尝试设置fb应用程序ID(由omniauth使用),以便其全局设计初始化程序和控制器。

更多信息

我需要设计初始化(config / initializer / devise.rb)以便我可以设置 config.omniauth:facebook,fb_app_id,fb_app_secret

尝试解决方案

我尝试将此信息添加到yml文件(http://railscasts.com/episodes/85-yaml-configuration-file)中,但是,看起来像是为控制器设置了yml哈希,但我无法将其用于设计初始化程序。

/home/ubuntu/myapp/config/initializers/devise.rb:215:in `block in <top (required)>': uninitialized constant APP_CONFIG (NameError)

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

对于那些感兴趣的人,我最终在config / environments / production.rb&amp;中编写了变量。配置/环境/ development.rb

您可以通过添加:

来设置全局变量
config.fb_app_id = 23839282 
config.fb_app_secret = aj32j32j4jk

(在production.rb或development.rb中设置适当的一个)

然后可以在初始化程序中使用它们,也可以在我的实际应用程序的视图,控制器等中使用它们。

Rails.configuration.fb_app_id
Rails.configuration.fb_app_secret

阅读第二个答案: How to define custom configuration variables in rails

答案 1 :(得分:0)

我这样做是通过添加一个初始值设定项(称为env.rb)来设置我需要的各种环境变量(例如ENV['FACEBOOK_APP_ID'])。

答案 2 :(得分:0)

我有类似的问题,但我找到了一个不同的解决方案。我将ENV ['FACEBOOK_APP_ID'],ENV ['FACEBOOK_APP_SECRET']从devise.rb中传递到CONFIG.OMNIAUTH。然后我添加环境变量(〜/ .bash_profile)或heroku config:添加FACEBOOK_APP_ID。这允许我安装到新环境并重新生成APPID而无需推送新代码。