i working on integrating stripe rails app. per stripe's documentation, i've added following 'config/initializers/stripe.rb', , set environmental variables test keys:
rails.configuration.stripe = { :publishable_key => env['publishable_key'], :secret_key => env['secret_key'] } stripe.api_key = rails.configuration.stripe[:secret_key]
(editing add suggested, changed following)
rails.configuration.stripe = { :publishable_key => env['stripe_publishable_key'] ||= rails.application.secrets.stripe_publishable_key, :secret_key => env['stripe_secret_key'] ||= rails.application.secrets.stripe_secret_key, } stripe.api_key = rails.configuration.stripe[:secret_key]
when try (generate controller, say, or run server), error saying have "undefined method `secret_key'":
$ rails s => booting webrick => rails 4.2.0 application starting in development on http://localhost:3000 => run `rails server -h` more startup options => ctrl-c shutdown server exiting /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/stripe-rails-0.3.1/lib/stripe/engine.rb:20:in `block in <class:engine>': undefined method `secret_key' #<hash:0x000000066aa1e8> (nomethoderror) /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `instance_exec' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `run' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/initializable.rb:55:in `block in run_initializers' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `call' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each' /usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/initializable.rb:54:in `run_initializers' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/application.rb:352:in `initialize!' /home/ubuntu/workspace/junkyardstorefinal/config/environment.rb:5:in `<top (required)>' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `block in require' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require' /home/ubuntu/workspace/junkyardstorefinal/config.ru:3:in `block in <main>' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/builder.rb:55:in `instance_eval' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/builder.rb:55:in `initialize' /home/ubuntu/workspace/junkyardstorefinal/config.ru:in `new' /home/ubuntu/workspace/junkyardstorefinal/config.ru:in `<main>' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/builder.rb:49:in `eval' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/builder.rb:49:in `new_from_string' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/builder.rb:40:in `parse_file' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/server.rb:299:in `build_app_and_options_from_config' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/server.rb:208:in `app' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/server.rb:61:in `app' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/rack-1.6.0/lib/rack/server.rb:336:in `wrapped_app' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/server.rb:139:in `log_to_stdout' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/server.rb:78:in `start' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:80:in `block in server' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `tap' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `server' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>' /home/ubuntu/workspace/junkyardstorefinal/bin/rails:8:in `require' /home/ubuntu/workspace/junkyardstorefinal/bin/rails:8:in `<top (required)>' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/client.rb:26:in `run' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/bin/spring:48:in `<top (required)>' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load' /usr/local/rvm/gems/ruby-2.1.5@rails4/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>' /home/ubuntu/workspace/junkyardstorefinal/bin/spring:13:in `require' /home/ubuntu/workspace/junkyardstorefinal/bin/spring:13:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>'
what other data helpful can help? that's entirety of stripe.rb there, , can't find anywhere else i've used "secret_key" or anywhere else appears in the tutorial working through. nor have touched of files mentioned in full trace.
oddly, although can't start server on cloud9, when use heroku @ it, app launches , works fine -- other problem connecting redis prevents displaying user's cart.
(updating add: i've merged branch on , tried push merged master branch, means heroku compiles now, find can't push heroku master branch without getting "nomethoderror: undefined method `secret_key' #" , "push rejected".)
i think error env['publishable_key']
, env['secret_ket']
nil.
to solve problem. in terminal
$export publishable_key=yourpublisablekey $export secret_key=yoursecretkey $rails s
i encourage put key's in secret.yml
like
development: stripe_publishable_key: yourpublisablekey stripe_secret_key: yoursecretkey production: stripe_publishable_key: yourpublisablekey stripe_secret_key: yoursecretkey
you can access simple adding rails.application.secrets.stripe_publishable_key
, rails.application.secrets.stripe_secret_key
for example in config/initializers/stripe.rb
rails.configuration.stripe = { :publishable_key => env['publishable_key'] ||= rails.application.secrets.stripe_publishable_key, :secret_key => env['secret_key'] ||= rails.application.secrets.stripe_secret_key }
hope helps.