Ursachen für den Fehler Ruby NameError Uninitialized Constant

Die Open-Source-Programmiersprache Ruby ist bekannt für ihre klare Syntax und Benutzerfreundlichkeit. Das bedeutet nicht, dass Sie nicht gelegentlich auf eine Fehlermeldung stoßen. Eine der ärgerlichsten ist die Ausnahme "NameError Uninitialized Constant", da sie mehrere Ursachen hat. Die Syntax der Ausnahme folgt diesem Format:

NameError: nicht initialisierte Konstante Something

oder

NameError: nicht initialisierte Konstante Object :: Something

(wo verschiedene Klassennamen anstelle von Etwas)

Ruby NameError Nicht initialisierte Konstante Ursachen

Der Fehler "Nicht initialisierte Konstante" ist eine Variation einer regulären NameError-Ausnahmeklasse. Es gibt mehrere mögliche Ursachen. 

  • Dieser Fehler wird angezeigt, wenn der Code auf eine Klasse oder ein Modul verweist, die bzw. das nicht gefunden werden kann, da der Code häufig keine Informationen enthält benötigen, Dies weist die Ruby-Datei an, die Klasse zu laden.
  • In Ruby beginnen Variablen / Methoden mit Kleinbuchstaben, während Klassen mit Großbuchstaben beginnen. Wenn der Code diese Unterscheidung nicht widerspiegelt, erhalten Sie die Ausnahme "Nicht initialisierte Konstante".
  • Eine weitere mögliche Ursache für den NameError-Fehler ist, dass Sie im Code einen einfachen Tippfehler gemacht haben. 
  • Ruby unterscheidet zwischen Groß- und Kleinschreibung, daher sind "TestCode" und "Testcode" völlig unterschiedlich. 
  • Der Code enthält Erwähnung von Rubygems, was in allen außer alten Ruby-Versionen veraltet ist.

So beheben Sie den Fehler

Überprüfen Sie den Code zur Fehlerbehebung nacheinander auf die oben aufgeführten möglichen Ursachen. Wenn Sie ein Problem finden, beheben Sie es. Durchsuchen Sie beispielsweise den Code nach einer Diskrepanz in Groß- und Kleinschreibung für Variablen und Klassen. Wenn Sie eine finden und korrigieren, ist Ihr Problem wahrscheinlich gelöst. Ist dies nicht der Fall, fahren Sie mit den anderen möglichen Ursachen fort und beheben Sie sie, während Sie fortfahren.

Wenn sich die Klasse, auf die Sie im Code verweisen, in einem anderen Modul befindet, verweisen Sie mit dem vollständigen Namen darauf wie folgt:

#! / usr / bin / env rubymodule MyModule class MyClass; endendc = MyModule :: MyClass.new

Über Ruby-Ausnahmen

Ausnahmen sind, wie Ruby Sie auf Probleme im Code aufmerksam macht. Wenn ein Fehler im Code auftritt, wird eine Ausnahme "ausgelöst" oder "ausgelöst", und das Programm wird standardmäßig beendet.

Ruby veröffentlicht eine Ausnahmehierarchie mit vordefinierten Klassen. NameErrors befinden sich in der StandardError-Klasse, zusammen mit RuntimeError, ThreadError, RangeError, ArgumentError und anderen. Diese Klasse enthält die meisten normalen Ausnahmen, die in typischen Ruby-Programmen auftreten.