Como definir chaves de autenticação do facebook dependendo do ambiente?

Eu tenho um aplicativo de trilhos que usa omniauth para autenticar visitantes via facebook.

Quando você registra um aplicativo no facebook, é necessário registrar um URL de retorno de chamada para o qual eles serão redirecionados após a conclusão do processo de autenticação.

Como meu site de produção está hospedado em um servidor diferente do meu ambiente de desenvolvimento, preciso registrar 2 URLs diferentes no Facebook. Eu fiz isso registrando dois aplicativos, um ao vivo e uma versão de desenvolvedor.

Agora é claro que tenho dois app_ids e dois app_secrets que meu aplicativo Rails precisa usar.

Como configuro o OmniAuth para usar um conjunto de chaves no ambiente de desenvolvimento e outro na produção?

Eu tentei definir minhas chaves no meu diretório / config / environment da seguinte maneira:

# development.rb
SampleApp::Application.configure do
  config.omniauth_keys.facebook.app_id = "32423423"
  config.omniauth_keys.facebook.api_key = "324234324234324"
  config.omniauth_keys.facebook.app_secret = "242343424234324324234324"
end

# production.rb
SampleApp::Application.configure do
  config.omniauth_keys.facebook.app_id = "7657566"
  config.omniauth_keys.facebook.api_key = "7756765765756757"
  config.omniauth_keys.facebook.app_secret = "65756767567567567757"
end

e depois em /config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
  keys = SampleApp::Application.config.omniauth_keys

  # ==> OmniAuth Provider Credentials
  #                   APP_ID                SECRET_ID
  provider :facebook, keys.facebook.app_id, keys.facebook.app_secret
end

mas eu entendo

`method_missing': undefined method `omniauth_keys'

quando tento iniciar o servidor de desenvolvimento, acho que porque o omniauth.rb é carregado antes de / emvironments / *?

Como posso configurar isso?

Editar: Aqui está uma mensagem de erro mais detalhada

=> Booting WEBrick
=> Rails 3.0.4 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/railtie/configuration.rb:77:in `method_missing': undefined method `omniauth_keys' for #<Rails::Application::Configuration:0xadaa69c> (NoMethodError)
    from /home/david/sites/sample_app/config/environments/development.rb:32:in `block in <top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:47:in `class_eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:47:in `configure'
    from /home/david/sites/sample_app/config/environments/development.rb:1:in `<top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `block in require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application/bootstrap.rb:11:in `block in <module:Bootstrap>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:25:in `instance_exec'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:25:in `run'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:50:in `block in run_initializers'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:49:in `each'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:49:in `run_initializers'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:134:in `initialize!'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:77:in `method_missing'
    from /home/david/sites/sample_app/config/environment.rb:5:in `<top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `block in require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/sites/sample_app/config.ru:3:in `block in <main>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:46:in `instance_eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:46:in `initialize'
    from /home/david/sites/sample_app/config.ru:1:in `new'
    from /home/david/sites/sample_app/config.ru:1:in `<main>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:35:in `eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:35:in `parse_file'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:162:in `app'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:248:in `wrapped_app'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:213:in `start'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands/server.rb:65:in `start'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:30:in `block in <top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:27:in `tap'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:27:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

questionAnswers(1)

yourAnswerToTheQuestion