2011-05-06 20 views
8

Estoy trabajando para integrar Facebook en mi aplicación. Para hacer eso estoy usando koala, idear y omniauth.Cómo usar los valores YML en una configuración/inicializador

Para koala, tengo

/config/facebook.yml 

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

entonces tengo también con OmniAuth:

/config/initalizers/omniauth.rb 

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

problema aquí es que tengo el mismo valor repetido en ambos lugares. ¿Cómo puedo secar esto para que app_id y secret_key solo vivan en un lugar y un archivo haga referencia al otro?

Respuesta

9

Hay una gran Railscast en hacer esto: http://railscasts.com/episodes/85-yaml-configuration-file

En omniauth.rb, puede agregar esta línea:

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

entonces usted puede hacer:

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

Me ayudó con una pregunta similar sobre S3 config, http://stackoverflow.com/questions/6305523/rails3-how-to-get-at-aws-s3s-yml-config-data-in-the- app/6306039 # 6306039, gracias! –

3

Además de la encima de la respuesta puede necesitar usar un código ligeramente diferente para cargar el archivo:

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