簡體   English   中英

未初始化的常量 AWS::S3::Base 通過 AWS-SDK

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM