Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 通过AWS-SDK未初始化常量AWS::S3::Base_Ruby_Amazon Web Services_Amazon S3_Paperclip - Fatal编程技术网

Ruby 通过AWS-SDK未初始化常量AWS::S3::Base

Ruby 通过AWS-SDK未初始化常量AWS::S3::Base,ruby,amazon-web-services,amazon-s3,paperclip,Ruby,Amazon Web Services,Amazon S3,Paperclip,这是我遇到的一个问题,在我使用较新版本的回形针升级到AWS-SDK(而不是AWS-s3)后,我无法再调用AWS::s3::Base.building_connection!一点也不 在我的代码中我调用了哪里 AWS::S3::Base.establish_connection!(:access_key_id => '****', :secret_access_key => '***') 我得到这个错误 NameError (uninitialized constant AWS::S

这是我遇到的一个问题,在我使用较新版本的回形针升级到AWS-SDK(而不是AWS-s3)后,我无法再调用AWS::s3::Base.building_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'
是的,没有AWS::S3::Base。我认为这是最接近的等价物:

s3 = AWS::S3.new(:access_key_id => '****', :secret_access_key => '***')

由于这是我在谷歌搜索中为解决这个问题而弹出的第一个页面,我将评论我是如何解决这个问题的。在AWS SDK 2.0.47下

require 'rubygems'
require 'aws/s3'

include AWS::S3

AWS::S3::Base.establish_connection!(
   :access_key_id => '',
   :secret_access_key => ''
)

我只是错过了include AWS::S3。我怀疑很多人都遇到了这个问题,因为我还没有看到一个直接的正面答案。

我尝试了Konstantino解决方案,但不幸的是,它对我不起作用。使用
include AWS::S3
引发以下异常

TypeError:参数类型类错误(应为模块)

这就是我解决同样问题的方式

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的模块和方法,该方法是使用延迟作业启动的,因此该补丁在我的案例中没有产生问题。但这可能会在另一个用例中产生问题,因为
aws sdk
的类现在被
aws-s3
的模块所取代。

这是正确的。aws sdk维护自己的持久连接池,无需显式建立连接。我最初通过将所有aws代码降级到非常早期的版本来修复它。但我能够再次升级,使用它,让我的aJAX上传程序和EBAY API gem都能很好地工作。谢谢,谢谢。它节省了几个小时的搜索:)