当使用gem' aws-sdk-core'积极的记录面临问题

时间:2015-02-03 05:38:43

标签: ruby ruby-on-rails-4 amazon-web-services rubygems aws-sdk

我已经安装了gem'aws-sdk-core',在我的模型中我定义了

class abcd < Aws::Record::Base
  ab = Pathname.new("#{Rails.root}/config/aws.yml")
  cd = YAML::load(ERB.new(File.read(path)).result)

  set_domain_name cd[Rails.env]['domain']      
end

我正在使用这个aws来运行我的rake tasks.so当我运行我的rake任务时它给出了错误:

NameError: uninitialized constant Aws::Record
/home/project/app/models/abcd.rb:1:in `<top (required)>'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:465:in `block (2 levels) in eager_load!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:464:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:464:in `block in eager_load!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:462:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:462:in `eager_load!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/engine.rb:347:in `eager_load!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `instance_exec'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `run'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/initializable.rb:55:in `block in run_initializers'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `call'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/initializable.rb:54:in `run_initializers'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/application.rb:215:in `initialize!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/railtie/configurable.rb:30:in `method_missing'
/home/project/config/environment.rb:5:in `<top (required)>'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/application.rb:189:in `require_environment!'
/home/.rvm/gems/ruby-2.1.5/gems/railties-4.0.0/lib/rails/application.rb:249:in `block in run_tasks_blocks'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:240:in `call'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:235:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:201:in `block in invoke_prerequisites'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:199:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:199:in `invoke_prerequisites'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain'
/home/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:106:in `each'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
/home/.rvm/gems/ruby-2.1.5/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
/home/.rvm/gems/ruby-2.1.5/bin/rake:23:in `load'
/home/.rvm/gems/ruby-2.1.5/bin/rake:23:in `<main>'
/home/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `eval'
/home/.rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `<main>'

请帮我找到解决方案。提前谢谢!!!

2 个答案:

答案 0 :(得分:0)

适用于Ruby的v2 AWS SDK未包含v1的AWS::Record抽象。您现在可以继续使用v1实现,因为v1和v2 gems都可以在同一个应用程序中使用。

答案 1 :(得分:0)

是的,我刚刚遇到这个问题并解决了。这是因为AWS将他们的gem更新为2.0。如果您将gem更新为2.0,则需要不同的配置。

如果您想使用之前的版本,只需更改Gemfile,如下所示:

的Gemfile

gem&#39; aws-sdk&#39;,&#39;&lt; 2.0&#39;