2012-04-13 10 views
13

Bu, daha yeni sürüm (ler) ile AWS-SDK'ye (aws-s3 yerine) yükseltildikten sonra karşılaştığım bir sorun. ataç Artık AWS :: S3 :: Base.establish_connection'ı arayamıyorum! hiç Ben bu hatayı alıyorumbaşlatılmamış sabit AWS :: S3 :: AWS-SDK yoluyla temel

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

diyoruz hiç benim kodunda

...

NameError (uninitialized constant AWS::S3::Base): 
    app/models/asset.rb:28:in `move_upload_from_temp_to_final_resting_place' 

cevap

21

Evet, aws-sdkAWS::S3::Base yoktur. Bu ben çözmek için yönetilen nasıl yorum yapacak bu sorunu çözmek için benim google arama benim için açıldı ilk sayfa olduğu gibi

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

Bu doğrudur. Aws-sdk, kendi kalıcı bağlantı havuzunu korur, açıkça bir bağlantı kurmaya gerek yoktur. –

+0

Orijinal olarak tüm AWS kodlarımı çok erken sürümlere indirerek sabitledim. Ancak bunu tekrar kullanabildim ve bunu hem aJAX yükleyiciyle hem de EBAY API gemimle güzel bir şekilde çalıştırabildim. Teşekkürler. –

+0

Teşekkürler. Birkaç saat arama kaydetti :) – Salil

2

: Ben bu yakın eşdeğer olduğunu düşünüyorum. AWS SDK 2.0.47

Sadece AWS :: S3 içeriklerini eksik buluyordum. Ve bir çok insanın bu konuya karıştığından şüpheleniyorum, çünkü henüz doğru bir cevap görmedim.

0

Konstantino çözümünü denedim ancak maalesef benim için çalışmadı. include AWS::S3 kullanılarak aşağıdaki özel durum oluştu. Ben delayed_job kullanılarak başlatılan bir başka yöntemde aws-s3 'ın modülleri ve yöntemler kullanılarak olduğu gibi ben aynı sorunu

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

nasıl çözdüğünü

TypeError: wrong argument type Class (expected Module)

Bu

olduğunu bu yama sorunu yaratmadı benim durumumda. Ancak bu durum, başka bir kullanım durumunda aws-sdk 'un sınıfının aws-s3 modülü ile değiştirildiğinden sorun oluşturabilir.