How to list all autoload paths in Rails

后端 未结 3 2069
轮回少年
轮回少年 2021-02-04 10:05

How do you list all of the autoload paths in Rails?

In Rails console when I do this, it only lists the custom paths added to the config:

$ rails c
Loading          


        
3条回答
  •  借酒劲吻你
    2021-02-04 10:53

    Update: please see Laura's answer using ActiveSupport::Dependencies.autoload_paths below. I've left this answer here as an alternate method.

    In Rails::Engine which is included in the Rails application's module, there is the following method:

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

    So, you could either do:

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

    or:

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

    or just:

    MyRailsApp::Application._all_autoload_paths
    

    The default result in Rails 3.2.9 is:

    ["/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"]
    

    This should include all the autoload paths that were added by other gems and custom load paths.

提交回复
热议问题