2012-10-01 21 views
18

Creé una biblioteca en el directorio "lib" de rieles. La estructura de la biblioteca es algo como esto:Error de los rieles "no es un módulo"

lib/insurance/broker/fake_broker.rb 

la clase tiene el siguiente ejemplo:

module Insurance 
    module Broker 
    class FakeBroker 
     def initialize(user_id, user_secret) 
     @user_id = user_id 
     @user_secret = user_secret 
     end 
    end 
    end 
end 

Por lo tanto, en mi result_controller que estoy haciendo esto:

require 'insurance/broker/fake_broker' 

def show 
    broker = Insurance::Broker::FakeBroker.new(1234,1234) 
end 

pero raíles vuelve este error:

Insurance is not a module 

¿Qué pasa aquí?

+0

'fake_broker.rb' es probable que no incluye en su trayectoria de carga Rieles –

+0

Pero estoy incluso con require 'insurance/broker/fake_broker' – rizidoro

+0

Pruebe 'require Rails.root.join ('insurance', 'broker', 'fake_broker')' para ver si cambia algo. Además, cuando se llama nuevo, necesitarás dos argumentos que creo según tu método de inicialización (este es otro problema pronosticado;)) –

Respuesta

34

Ruby le dice que encontró un Insurance, pero no es un módulo. Quizás ya haya definido un Insuranceclase?

Dependiendo del código que lo rodea podría ayudar si "reset" el espacio de nombres anteponiendo dos puntos dobles:

broker = ::Insurance::Broker::FakeBroker.new(1234,1234) 
+0

Suena lógico ... ¿quizás también tienes un Modelo de Rails llamado Seguro? –

+3

En ese caso, el doble colon no ayudará porque el modelo también estará en el nivel superior. –

+3

Yeaappp. Ese fue el problema! Tengo un modelo de seguro. ¡Gracias hombre! – rizidoro

Cuestiones relacionadas