2012-04-04 13 views
1

Ich möchte TestModule in MyModule enthalten:Rails Module und Routing

# in test_module.rb 
module TestModule 
    SOMETHING = [1, 2, 3] 
end 

# in my_module.rb 
module MyModule 
    include TestModule 

    def my_method 
     "testing" 
    end 
end 

Ich erhalte diese Fehlermeldung:

Routing Error: uninitialized constant MyModule::TestModule 

Ich habe doppelt überprüft die Schienen Namenskonvention. Irgendeine Idee, warum das nicht funktioniert?

Mehr Informationen: config.autoload_paths += ... in application.rb wird als Kommentar gekennzeichnet. Jedoch werden andere Module in /lib irgendwie geladen.

Weitere Informationen 2: Ich denke, Schienen können die neue Datei test_module.rb nicht sehen. Wenn ich ein neues Modul zu einer vorhandenen Datei hinzufüge, die ein Modul enthält, dann funktioniert das neue Modul. Gibt es eine Art Rails Cleanup oder Refresh für den $ LOAD_PATH oder sowas?

Antwort

2

Sie auch mit diesem versuchen:

# in my_module.rb 

load 'test_module.rb' 

module MyModule 
    include ::TestModule 

    def my_method 
     "testing" 
    end 
end 

beziehen sich auf Top-Level-Namespace.

2

Try a "require" an die Spitze der Datei wie folgt ergänzt:

# in my_module.rb 
require 'test_module' 
module MyModule 
    include TestModule 
    ...