这是我遇到的一个问题,在我使用新的回形针版本升级到AWS-SDK(而不是aws-s3)后,我再也无法调用AWS :: S3 :: Base .establish_connection!一点都不
在我的代码中,我打电话
AWS::S3::Base.establish_connection!(:access_key_id => '****', :secret_access_key => '***')
我收到此错误...
NameError (uninitialized constant AWS::S3::Base):
app/models/asset.rb:28:in `move_upload_from_temp_to_final_resting_place'
答案 0 :(得分:21)
是的,aws-sdk没有AWS::S3::Base
。我认为这是最接近的等价物:
s3 = AWS::S3.new(:access_key_id => '****', :secret_access_key => '***')
答案 1 :(得分:2)
由于这是我在谷歌搜索中为我解决此问题而弹出的第一页,我将评论我是如何设法解决它的。在AWS SDK 2.0.47下
require 'rubygems'
require 'aws/s3'
include AWS::S3
AWS::S3::Base.establish_connection!(
:access_key_id => '',
:secret_access_key => ''
)
我只是错过了包含AWS :: S3。我怀疑很多人都在讨论这个问题,因为我还没有看到直接的回答。
答案 2 :(得分:0)
我尝试过Konstantino解决方案,但不幸的是,它对我没用。使用include AWS::S3
引发了以下异常。
TypeError: wrong argument type Class (expected Module)
这就是我解决同样问题的方法
AWS.send(:remove_const, :S3) if AWS::S3.class == Class
require Gem::Specification.find_by_name("aws-s3").gem_dir + "/lib/aws/s3.rb"
因为我在使用aws-s3
启动的另一种方法中使用了delayed_job
的模块和方法,所以这个补丁在我的案例中并没有产生问题。但是这可能会在另一个用例中产生问题,因为aws-sdk
的类现在已被aws-s3
模块替换。