2012-04-03 9 views
0

Ich benutze marcel aws-s3 gem. Ich versuche, es in meinem Projekt zu verlangen:kann nicht erfordern ruby ​​aws-s3

gem 'aws-s3', :require => 'aws/s3'

Es ist jedoch nicht erforderlich bekommt:

irb(main):003:0> require 'aws/s3' 
=> false 

Wie kann ich von dem AWS::S3:: Namespace loswerden?

+0

Wenn Sie Bundler verwenden, sollte der ': require' Teil in der Gemdatei bereits den Edelstein benötigen. Wenn Sie es erneut manuell eingeben, wird "false" zurückgegeben. Probieren Sie es mit etwas aus der Stdlib, z. starte IRB und 'require' set'' zweimal hintereinander. –

+0

Danke, das macht Sinn. In meinem Code erkennt es jedoch keine Klassen, ohne es mit "AWS :: S3 ::" zu versehen. – m33lky

+0

Nun, das liegt wahrscheinlich daran, dass die Klassen innerhalb des "S3" -Moduls innerhalb des "AWS" -Moduls definiert sind. Wie Sie feststellen werden, verwenden die Dokumente auch "AWS :: S3 :: Base.establish_connection!". Denken Sie an Namespace, wenn Sie aus einer anderen Sprache kommen und Ruby nicht allzu gut kennen. –

Antwort

0

Wenn Sie Bundler verwenden, sollte der :require Teil in der Gemfile bereits den Edelstein benötigen. Wenn Sie es erneut manuell eingeben, wird false zurückgegeben. Probieren Sie es mit etwas aus der Stdlib, z. starte IRB und setze zweimal 'set'.

In Bezug auf die AWS::S3:: Teil. Angenommen, Bundler oder require würden alle Namespaces loswerden und Sie würden das AWS-Juwel in einer Rails-App verwenden. Wie unterscheiden Sie zwischen AWS::S3::Base und ActiveRecord::Base? Wenn Sie den Namespace wirklich loswerden wollen, include AWS und include S3.

Verwandte Themen