Causas de Ruby NameError Error constante no inicializado

El lenguaje de programación de código abierto Ruby es conocido por su sintaxis clara y facilidad de uso. Eso no significa que ocasionalmente no te encuentres con un mensaje de error. Una de las más molestas es la excepción constante de NameError sin inicializar porque tiene más de una causa. La sintaxis de la excepción sigue este formato:

NameError: constante no inicializada Algo

o

NameError: Objeto constante no inicializado :: Algo

(donde varios nombres de clase están en lugar de Alguna cosa)

Ruby NameError Causas constantes no inicializadas

El error constante no inicializado es una variación de una clase de excepción NameError normal. Tiene varias causas posibles.. 

  • Verá este error cuando el código se refiera a una clase o módulo que no puede encontrar, a menudo porque el código no incluye exigir, que indica al archivo Ruby que cargue la clase.
  • En Ruby, las variables / métodos comienzan con letras minúsculas, mientras que las clases comienzan con letras mayúsculas. Si el código no refleja esta distinción, recibirá la excepción Constante sin inicializar.
  • Otra posible causa del error NameError es que ha cometido un error tipográfico simple en el código. 
  • Ruby distingue entre mayúsculas y minúsculas, por lo que "TestCode" y "Testcode" son completamente diferentes. 
  • El código contiene mención de rubygems, que está en desuso en todas las versiones de Ruby excepto en las antiguas.

Cómo arreglar el error

Para solucionar su código, examínelo para ver las posibles causas enumeradas anteriormente, una por vez. Si encuentra un problema, resuélvalo. Por ejemplo, revise el código buscando una discrepancia en el uso de mayúsculas y minúsculas en variables y clases. Si encuentra uno y lo corrige, su problema probablemente esté resuelto. Si no es así, continúe con las otras causas posibles, solucionando a medida que avanza.

Si la clase a la que se refiere en el código está en otro módulo, consúltelo con su nombre completo de esta manera:

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

Acerca de las excepciones de Ruby

Las excepciones son cómo Ruby llama su atención sobre los problemas en el código. Cuando se encuentra un error en el código, una excepción se "activa" o "arroja" y el programa se cierra por defecto.

Ruby publica una jerarquía de excepciones con clases predefinidas. NameErrors están en la clase StandardError, junto con RuntimeError, ThreadError, RangeError, ArgumentError y otros. Esta clase incluye la mayoría de las excepciones normales que se encuentran en los programas típicos de Ruby..