1

I'm currently having issues with configuring Figaro for my Rails 4 application. Whenever I try to run RSpec or rake db:migrate, I encounter the following error:

method_missing': undefined methodaws_access_key' for {}:Figaro::Env

Here is the complete error message for reference:

Louiss-MacBook-Pro:beautifulnow louismedina$ rspec
/Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/figaro-0.7.0/lib/figaro/env.rb:9:in `method_missing': undefined method `aws_access_key' for #<Figaro::Env:0x007fc1b17749d8> (NoMethodError)
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/config/initializers/aws.rb:1:in `<top (required)>'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:223:in `load'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:223:in `block in load'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:214:in `load_dependency'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:223:in `load'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/engine.rb:609:in `block (2 levels) in <class:Engine>'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/engine.rb:608:in `each'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/engine.rb:608:in `block in <class:Engine>'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:30:in `run'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) in each_strongly_connected_component_from'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:44:in `each'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:44:in `tsort_each_child'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:411:in `call'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `call'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each'
    from /Users/louismedina/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/application.rb:215:in `initialize!'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/railties-4.0.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/config/environment.rb:5:in `<top (required)>'
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/spec/spec_helper.rb:3:in `require'
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/spec/spec_helper.rb:3:in `<top (required)>'
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/spec/controllers/admin/admin_controller_spec.rb:1:in `require'
    from /Users/louismedina/Desktop/MindtonicMedia/beautifulnow/spec/controllers/admin/admin_controller_spec.rb:1:in `<top (required)>'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `each'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load_spec_files'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:22:in `run'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:80:in `run'
    from /Users/louismedina/.rvm/gems/ruby-2.1.5@beautifulnow-rails4/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:17:in `block in autorun'

Does anyone have any guidance on this? Thanks.

zero323
  • 322,348
  • 103
  • 959
  • 935
  • @sevenseacat: thank you for re-formatting Terminal output. – viewsatwork Mar 04 '15 at 01:15
  • Note that this error also occurs when I attempt to turn on the Rails server. – viewsatwork Mar 04 '15 at 01:19
  • Can you provide your application.yml with dummy data? – wolfemm Mar 04 '15 at 01:23
  • In the application that I cloned down from the Github repo, there is a file entitled "application.yml.example." Is that what you're referring to? – viewsatwork Mar 04 '15 at 01:34
  • does the repo have setup instructions? Normally you'd rename that file or create a copy of it as `application.yml` and put your actual environment variables in that. – wolfemm Mar 04 '15 at 02:18
  • It does, but there are no explicit instructions on setting up the ```application.yml``` file. – viewsatwork Mar 04 '15 at 02:28
  • In this case, would ```aws_access_key``` be an environment variable that I would set up here? If so, I'm not sure where I would obtain the information to set this variable equal to. – viewsatwork Mar 04 '15 at 02:29

2 Answers2

0

I seemed to have solved the issue. In my "application.yml" file, I went ahead and provided these variables with pseudo values in order to get the undefined methods errors to stop.

For example:

aws_access_key: '123456789'
aws_access_secret: '123456789'
aws_bucket: '123456789'
0

Until Figaro 0.7, if you tried to access keys that didn't exist via Figaro.env.my_non_existant_key you would get an exception. The exception is misleading, because figaro uses Ruby's metaprogramming feature and can define methods at run time (so rather than having to call Figaro.env["my_key1"], you can call a method Figaro.env.my_key1).

Starting with Figaro 1.0, if you call Figaro.env.my_non_existant_key you will get nil as return value. If you want to ensure that the exception is raised when the key doesn't exist you can use new syntax with a 'bang' Figaro.env.my_non_existant_key!.

matb
  • 851
  • 13
  • 23