16

これは、新しいバージョンのペーパークリップを使用して(aws-s3ではなく)AWS-SDKにアップグレードした後、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'
4

3 に答える 3

22

ええ、aws-sdkにはありませんAWS::S3::Base。私はこれが最も近い同等物だと思います:

s3 = AWS::S3.new(:access_key_id => '****', :secret_access_key => '***')
于 2012-04-14T15:54:53.213 に答える
2

これはこの問題を解決するために私のグーグル検索で私のためにポップアップした最初のページだったので、私はそれをどのように解決したかについてコメントします。AWSSDK2.0.47の下で

require 'rubygems'
require 'aws/s3'

include AWS::S3

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

インクルードAWS::S3が欠けていました。そして、私はまだ正直な答えを見たことがないので、多くの人々がこの問題にぶつかっていると思います。

于 2015-06-02T19:10:44.890 に答える
0

Konstantinoソリューションを試しましたが、残念ながらうまくいきませんでした。usinginclude 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

于 2016-08-20T08:46:06.197 に答える