2012-04-13 8 views
13

これは、AWS-SDK(aws-s3ではなく)を新しいバージョンでアップグレードした後に、 paperclip私はもはやAWS :: S3 :: Base.establish_connectionを呼び出すことはできません!まったく。私はこのエラーを取得する未初期化定数AWS :: S3 :: Base by AWS-SDK

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' 

答えて

21

うん、aws-sdkAWS::S3::Baseを持っていません。これは私が、私はそれを解決するために、管理方法についてはコメントします。この問題を解決するために、私のGoogle検索で私のためにポップアップ最初のページだったよう

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

これは正しいです。 aws-sdkは独自の永続接続プールを維持しているため、明示的に接続を確立する必要はありません。 –

+0

私は元々、すべてのAWSコードを非常に早いバージョンにダウングレードすることで修正しました。しかし、私はこれを使用して再度アップグレードすることができ、aJAXアップローダとEBAY API gemの両方でうまく動作するようになりました。ありがとう。 –

+0

ありがとうございます。それは検索のカップル時間を保存しました:) – Salil

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インクルードが不足していました。私はまだ正直な答えを見ていないので、多くの人々がこの問題にぶつかっていると思う。

0

私はコンスタンティノの解決策を試しましたが、残念ながら、それは私のためには機能しませんでした。 include AWS::S3を使用すると、次の例外がスローされました。私はdelayed_jobを使用して開始された別の方法でaws-s3のモジュールとメソッドを使用していたと私は同じ問題

AWS.send(:remove_const, :S3) if AWS::S3.class == Class 
require Gem::Specification.find_by_name("aws-s3").gem_dir + "/lib/aws/s3.rb" 

を解決する方法

TypeError: wrong argument type Class (expected Module)

これ

は、このパッチが問題を作成していません私の場合。しかし、これは aws-sdkのクラスが aws-s3のモジュールに置き換えられたため、別のユースケースで問題を引き起こす可能性があります。