How to set facebook authentication keys depending on environment?

I have a rails application that uses omniauth to authenticate visitors via facebook.

When you register the application using facebook, you need to register the callback URL, which will be redirected as soon as they complete the authentication process.

Since my production site is hosted on a different server than my development environment, I need to register 2 different URLs with Facebook. I did this by registering two applications - live and dev.

Now, of course, I have two app_ids and two app_secrets that my Rails application needs to use.

How to install OmniAuth to use one set of keys in a development environment and another in production?

I tried to set my keys in the my / config / environment directory as follows:

# 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 

and then in /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 

but i get

 `method_missing': undefined method `omniauth_keys' 

when I try to start the development server, do I assume that omniauth.rb loads before / emvironments / *?

How can I customize this?

Edit: Here is a more detailed error message

 => 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>' 
+6
ruby-on-rails facebook ruby-on-rails-3 omniauth
source share
1 answer

In / config / initializers / omniauth.rb

 if Rails.env.production? # set the app parameter elsif Rails.env.development? # set the app parameter else # test env # set the app parameter end 

Note: Rails.env.production? is a Rails 3 method. I think for versions 2.x you might have to use RAIL [ENV] or something like that.

+17
source share