2011-05-06 22 views
8

我正在努力将facebook集成到我的应用程序中。为此,我使用考拉,设计和omniauth。如何在配置/初始化程序中使用YML值

考拉,我有

/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只存在于一个地方,一个文件引用另一个地方?

回答

9

上有这样一个伟大的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 
+0

帮我一个关于S3配置的类似问题,http://stackoverflow.com/questions/6305523/rails3-how-to-get-at-aws-s3s-yml-config-data-in-the-the- app/6306039#6306039,谢谢! – 2011-06-10 12:00:31

3

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

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