ruby on rails-如何在配置/初始值设定项中使用YML值



我正在努力将facebook集成到我的应用程序中。为了做到这一点,我使用了考拉、设计和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

然后我还拥有omnauth:

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

这里的问题是,我在两个位置都重复了相同的值。如何将其干燥,使app_id和secret_key只存在于一个位置,并且一个文件引用另一个文件?

在这方面有一个很棒的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

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

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

相关内容

  • 没有找到相关文章

最新更新