[英]uninitialized constant AWS::S3::Base via AWS-SDK
這是我遇到的一個問題,因為在我使用較新版本的回形針升級到 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'
是的,aws-sdk沒有AWS::S3::Base
。 我認為這是最接近的等價物:
s3 = AWS::S3.new(:access_key_id => '****', :secret_access_key => '***')
由於這是在我的 google 搜索中為我彈出的第一個頁面來解決這個問題,我將評論我是如何設法解決它的。 在 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。 我懷疑很多人都遇到了這個問題,因為我還沒有看到直接的答案。
我嘗試了 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
的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.