【问题标题】:How to use YML values in a config/initializer如何在配置/初始化程序中使用 YML 值
【发布时间】:2011-05-06 03:06:57
【问题描述】:

我正在努力将 facebook 集成到我的应用中。为此,我使用了 koala、devise 和omniauth。

考拉我有

/config/facebook.yml

development:
    app_id: 123123132123
    secret_key: dasadsasd1231231
test:
    app_id: 313131313
    secret_key: das132asdads12132
production:
    app_id: dasdsadsadsadsa
    secret_key: adsdsa12das123fds21

然后我也有omniauth:

/config/initalizers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 123123132123, 'dasadsasd1231231'
end

这里的问题是我在两个位置重复了相同的值。我怎样才能把它弄干,以便 app_id 和 secret_key 只存在于一个地方,一个文件引用另一个文件?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 facebook omniauth


    【解决方案1】:

    有一个很棒的 Railscast 关于这样做:http://railscasts.com/episodes/85-yaml-configuration-file

    omniauth.rb,你可以添加这一行:

    FACEBOOK_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/facebook.yml")[RAILS_ENV]
    

    那么你可以这样做:

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :facebook, FACEBOOK_CONFIG['app_id'], FACEBOOK_CONFIG['secret_key']
    end
    

    【讨论】:

    【解决方案2】:

    除了上述答案之外,您可能需要使用稍微不同的代码来加载文件:

    FACEBOOK_CONFIG = YAML.load_file(Rails.root.join("config","facebook.yml"))[Rails.env]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 2011-08-14
      • 1970-01-01
      相关资源
      最近更新 更多