2012-04-13 13 views
13

Dies ist ein Problem, das ich mit der Tatsache habe, dass nach dem Upgrade auf AWS-SDK (anstelle von aws-s3) mit der neueren Version (en) von Büroklammer Ich kann nicht mehr AWS :: S3 :: Base.establish_connection aufrufen! überhaupt. nicht initialisierte Konstante AWS :: S3 :: Base über AWS-SDK

Wo immer in meinem Code Ich nenne

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

ich diesen Fehler ...

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

Antwort

21

Ja, aws-sdk hat nicht AWS::S3::Base. Ich denke, das in der Nähe entspricht:

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

Dies ist korrekt. Die aws-sdk verwaltet ihren eigenen persistenten Verbindungspool, sodass keine Verbindung explizit hergestellt werden muss. –

+0

Ich habe es ursprünglich behoben, indem ich meinen gesamten AWS-Code auf sehr frühe Versionen herunterstufte. Aber ich war in der Lage, noch einmal zu aktualisieren, indem ich dies nutze und die Dinge mit meinem aJAX-Uploader und meinem EBAY-API-Juwel funktionierte. Vielen Dank. –

+0

Danke. Es hat ein paar Stunden der Suche gespeichert :) – Salil

2

Da dies die erste Seite war das für mich auf meiner Google-Suche tauchte um dieses Problem zu lösen, ich werde kommentieren, wie ich es zu lösen geführt. Unter dem AWS SDK 2.0.47

Ich war einfach das Einschließen AWS :: S3. Und ich vermute, dass viele Leute auf dieses Problem stoßen, da ich noch keine direkte Antwort erhalten habe.

0

Ich versuchte Konstantino Lösung, aber leider hat es nicht für mich funktioniert. Verwenden include AWS::S3 warf die folgende Ausnahme.

TypeError: wrong argument type Class (expected Module)

Dies ist, wie ich das gleiche Problem

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

als ich aws-s3 ‚s-Module und Methoden in einem anderen Verfahren wurde unter Verwendung, die delayed_job mit initiiert wurde, hat dieser Patch nicht Thema erstellen in meinem Fall. Dies kann jedoch Probleme in einem anderen Anwendungsfall verursachen, da die Klasse aws-sdk jetzt durch das Modul aws-s3 ersetzt wird.

Verwandte Themen