2012-10-01 6 views
18

Ich baute eine Bibliothek auf "lib" Schienen-Verzeichnis. Die Struktur der Bibliothek ist so etwas wie dieses:Rails "ist kein Modul" Fehler

lib/insurance/broker/fake_broker.rb 

die Klasse wie das folgende Beispiel aussehen:

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

Also, meiner result_controller ich das tue:

require 'insurance/broker/fake_broker' 

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

aber Schienen gibt diesen Fehler zurück:

Insurance is not a module 

Was ist hier falsch?

+0

'fake_broker.rb' wird wahrscheinlich nicht in Ihrem Rails-Lastpfad enthält –

+0

Aber ich bin einschließlich mit 'versicherung/broker/fake_broker' – rizidoro

+0

Probieren Sie Rails.root.join ('Versicherung', 'Broker', 'fake_broker') ', um zu sehen, ob sich irgendetwas ändert. Wenn du neu anrufst, benötigst du zwei Argumente, die deiner Initialisierungsmethode entsprechen (das ist ein anderes vorhergesagtes Problem;)) –

Antwort

34

Ruby sagt Ihnen, dass es eine Insurance gefunden hat, aber es ist kein Modul. Vielleicht haben Sie bereits eine InsuranceKlasse definiert?

Je nach Code umgebenden könnte helfen, wenn Sie „Reset“ den Namensraum durch einen doppelten Doppelpunkt vorangestellt wird:

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

Klingt logisch ... hast du vielleicht ein Rails-Modell namens Insurance? –

+3

In diesem Fall hilft der doppelte Doppelpunkt nicht, weil das Modell auch auf der obersten Ebene wäre. –

+3

Yeaappp. Das war das Problem! Ich habe eine Musterversicherung. Danke, Mann! – rizidoro

Verwandte Themen