Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

731
Vistas
Rspec constante no inicializada para la clase anidada dentro del módulo - Ruby on Rails

En un proyecto de Rails, he creado una nueva clase dentro del directorio lib , esta clase tiene un espacio de nombres dentro de un módulo. Al crear un archivo de especificaciones para él, veo NameError: uninitialized constant MyNamespace .

Aquí está mi estructura de carpetas

 app/ ... lib my_namespace my_new_class.rb another_namespace another_old_class.rb spec lib my_namespace my_new_class_spec.rb another_namespace another_old_class_spec.rb

Aquí el contenido (abreviado) de: lib/my_namespace/my_new_class.rb

 module MyNamespace class MyNewClass end end

spec/lib/my_namespace/my_new_class_spec.rb

 RSpec.describe MyNamespace::MyNewClass do it "is true" expect(true).to eq(true) # irrelevant at this point end end

La razón por la que another_old_class_spec.rb es que sus pruebas se ejecutan sin problemas y no puedo encontrar ningún lugar donde esté explícitamente cargado o requerido en la configuración de la prueba (en caso de que pueda ser un problema potencial).

Al ejecutar la prueba con bundle exec rspec spec/lib/my_namespace/my_new_class_spec.rb o incluso bundle exec rspec spec/lib/my_namespace/ obtengo

 An error occurred while loading ./spec/lib/my_namespace/my_new_class_spec.rb Failure/Error: RSpec.describe MyNamespace::MyNewClass do NameError: uninitialized constant MyNamespace
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Como Georgiy Melnikov dio a entender en su comentario, de forma predeterminada, el directorio /lib no está en las rutas de carga automática, por lo que la constante MyNamespace no se resuelve automáticamente.

Básicamente tienes dos opciones para arreglar esto:

  1. requiere explícitamente el archivo con require lib/my_namespace/my_new_class en la parte superior del archivo de especificaciones
  2. agregue lib/ a las rutas de carga automática (hoy en día esto no se recomienda)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda