2012-11-29 13 views

Odpowiedz

16

Aktualizacja: patrz odpowiedź Laury za pomocą ActiveSupport :: Dependencies.autoload_paths poniżej. Opuściłem tę odpowiedź tutaj jako alternatywną metodę.

W Rails::Engine który znajduje się w module aplikacji Rails, nie istnieje następujący sposób:

def _all_autoload_paths 
    @_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq 
end 

Tak, można też zrobić:

(MyRailsApp::Application.config.autoload_paths + MyRailsApp::Application.config.eager_load_paths + MyRailsApp::Application.config.autoload_once_paths).uniq 

lub:

[:autoload_paths, :eager_load_paths, :autoload_once_paths].collect{|m|MyRailsApp::Application.config.send(m)}.flatten.uniq 

lub po prostu:

MyRailsApp::Application._all_autoload_paths 

Domyślna wynik w Rails 3.2.9 jest:

["/path/to/my_rails_app/app/assets", "/path/to/my_rails_app/app/controllers", "/path/to/my_rails_app/app/helpers", "/path/to/my_rails_app/app/mailers", "/path/to/my_rails_app/app/models"] 

ten powinien obejmować wszystkie ścieżki autoLoad, które zostały dodane przez innych klejnotów i ścieżek niestandardowych obciążeń.