2010-06-02 7 views

Antwort

11

Sie benötigen ein Symbol autoload (wahrscheinlich ein Tippfehler in Ihrer Frage) zu übergeben, und es auf die Eltern der Konstanten nennen, wie:

App.autoload :ModuleA, "app/module_a" 

Beachten Sie, dass dies auch für verschachtelte Ebenen funktioniert. Sagen Sie, dass in app/module_a Sie haben:

module App::ModuleA 
    autoload :Inner, "path/to/inner" 
end 

Wenn Rubin App::ModuleA::Inner trifft, wird es zunächst versuchen ModuleA zugreifen zu können, gelingt durch selbstladende, und nur dann Inner versuchen, was auch gelingt, weil sie jetzt, wo sie automatisch geladen es weiß.

+0

Ich verstehe das. Aber ich möchte nicht initialisieren, wenn ich ein Constant ModuleA aufruft, ich möchte es aufrufen, wenn jemand 'App :: ModuleA' sagt. –

+1

In der Tat, deshalb möchten Sie' App.autoload' aufrufen, nicht nur 'autoload' . Probieren Sie es aus, es wird funktionieren wie Sie wollen. –

+0

aaaah ... ich verstehe. Vielen Dank :) –