【问题标题】:devise with omniauth - setting a seperate config for dev and production使用 omniauth 设计 - 为开发和生产设置单独的配置
【发布时间】:2012-07-23 18:56:06
【问题描述】:

我正在使用带有设计的 omniauth,以允许在我的应用中通过 Facebook 登录。

我的 devise.rb 文件有以下行

config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 

我在 facebook 上有 2 个应用程序,一个指向我的实时网址,另一个指向我的开发网址。

如何将两个单独的omniauth 配置添加到devise rb 文件中?

有点像 -

if ENV['RAILS_ENV'] = "production"
    config.omniauth :facebook, 'MY_LIVE_APP_ID', 'MY_LIVE_APP_SECRET'  
else
    config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 
end

更重要的是,我应该把它放在 devise.tb 文件中,还是应该将它分离到我的 production.rb 和 devleopment.rb 文件中?如果是这样,我如何在我的 devise.rb 文件中引用它?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise omniauth production-environment


    【解决方案1】:

    我的方法是将它们存储在 yaml 文件中。我打电话给我的config/api_keys.yml

    defaults: &defaults
      twitter:
        api_key: "KEY"
        api_secret: "SECRET"
      facebook:
        api_key: "KEY"
        api_secret: "SECRET"
    
    development:
      <<: *defaults
    
    test:
      <<: *defaults
    
    production:
      twitter:
        api_key: "KEY2"
        api_secret: "SECRET2"
      facebook:
        api_key: "KEY2"
        api_secret: "SECRET2"
    

    然后在我的devise.rb 文件中执行:

    API_KEYS = YAML::load_file("#{Rails.root}/config/api_keys.yml")[Rails.env]
    config.omniauth :facebook , API_KEYS['facebook']['api_key'], API_KEYS['facebook']['api_secret']
    config.omniauth :twitter , API_KEYS['twitter']['api_key'], API_KEYS['twitter']['api_secret']
    

    作为一种良好做法,您可能不应该将生产 API 密钥存储在版本控制中的此文件中。您应该将其存储在服务器上并在部署脚本中对其进行符号链接,就像 database.yml

    【讨论】:

    • 感谢您的帮助。恐怕我不确定符号链接是什么意思,我在 heroku 上托管我的应用程序,所以我没有我知道的部署脚本。
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2017-08-18
    • 1970-01-01
    • 2014-01-07
    • 2018-06-15
    • 1970-01-01
    • 2015-07-17
    • 2013-02-21
    相关资源
    最近更新 更多