/ / Ruby on Rails Aws SDK v2-Konstante 'Aws' undefinierter konstanter Fehler in Modellen - Ruby-on-Rails, Ruby, Amazon-Web-Services, Amazon-S3

Ruby on Rails Aws SDK v2 Konstante 'Aws' undefined konstanten Fehler in Modellen - Ruby-on-Rails, Ruby, Amazon-Web-Services, Amazon-s3

Ich verwende erfolgreich "Aws" (Amazon WebServices) SDK Version 2 (NICHT "AWS" in Großbuchstaben, da dies der SDK-Namespace Version 1 ist. Ich verwende "Aws" Version 2) und die Namespace-Konstante "Aws" ist auf der Rails-Controller-Ebene im Code bekannt Gehen Sie eine Ebene tiefer und sagen Sie, dass der "Aws" -Namensraum nicht bekannt ist, wenn Sie versuchen, "Aws" in einem Modell zu verwenden, das von demselben Controller erstellt wurde. Ich erhalte einen undefinierten konstanten "Aws" -Fehler.

Ich gehe davon aus, dass das Aws-Toolkit initialisiert istindem Sie den Edelstein in das Gemfile aufnehmen und es ist da und alles, was richtig zu sein scheint. Die Bundle-Prüfung zeigt an, dass alle Probleme behoben sind, und wie gesagt, funktioniert dies im Controller, jedoch nicht im Modellklassencode.

Ich umgehe dies, indem ich das Aws SDK injiziereIch bin neu in Ruby und Rails, wenn Sie mir also Ratschläge geben oder mir beim Einrichten helfen können, damit das Aws-Toolkit global als I bezeichnet wird hätte erwartet, ich würde mich über eure hilfe freuen.

Danke im Voraus!

Antworten:

0 für die Antwort № 1

Die Antwort war, dass der Oszilloskopbetreiber dies tun musstenormal verwendet werden. Als neuer Ruby-Benutzer war ich nicht daran gewöhnt, dass Konstanten nicht global verfügbar sind. Daher wird die Erklärung, warum der Bereichsoperator benötigt wird, anhand der folgenden Verweise erläutert:

https://www.tutorialspoint.com/ruby/ruby_operators.htm

Ruby Dot "." und Doppelpunkt "::" Operatoren: Sie rufen eine Modulmethode auf, indem Sie ihrem Namen den Namen des Moduls und einen Punkt voranstellen, und Sie referenzieren eine Konstante unter Verwendung des Modulnamens und zweier Doppelpunkte.

Der :: -Operator ist ein unärer Operator, mit dem auf Konstanten, Instanzmethoden und Klassenmethoden, die in einer Klasse oder einem Modul definiert sind, von einer beliebigen Stelle außerhalb der Klasse oder des Moduls zugegriffen werden kann.

Denken Sie daran: In Ruby können Klassen und Methoden auch als Konstanten betrachtet werden.

Sie müssen dem :: Const_name lediglich einen Ausdruck voranstellen, der das entsprechende Klassen- oder Modulobjekt zurückgibt.

Wenn kein Präfixausdruck verwendet wird, wird standardmäßig die Hauptklasse Object verwendet.