【问题标题】:Rails: Where to define facebook app id so that it is available to the devise initializer and the controllers.Rails:在哪里定义 facebook 应用程序 ID,以便设计初始化程序和控制器可以使用它。
【发布时间】:2012-04-30 13:15:21
【问题描述】:

我正在尝试设置 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)

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    对于那些感兴趣的人,我最终将变量写在 config/environments/production.rb & config/environments/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

    【讨论】:

      【解决方案2】:

      我通过添加一个初始化程序(称为env.rb)来设置我需要的各种环境变量(例如ENV['FACEBOOK_APP_ID'])。

      【讨论】:

      • 有趣——但是,这些环境变量无法区分我是处于开发模式还是生产模式......
      • 您可以在生产服务器中手动设置它们(例如,使用export FACEBOOK_APP_ID=...,并且在初始化程序中,您可以使用=,而不是使用||=
      • hmm...有没有办法通过 yml 加载它 - 我试图获得类似于 railcast 中描述的内容
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 2016-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多