Ruby on rails 如何列出Rails中的所有自动加载路径

Ruby on rails 如何列出Rails中的所有自动加载路径,ruby-on-rails,ruby-on-rails-3,autoload,Ruby On Rails,Ruby On Rails 3,Autoload,如何列出Rails中的所有自动加载路径 在Rails控制台中,当我执行此操作时,它只列出添加到配置中的自定义路径: $ rails c Loading development environment (Rails 3.2.9) 1.9.3p194 :001 > MyRailsApp::Application.config.autoload_paths => [] 更新:请使用下面的ActiveSupport::Dependencies.autoload_路径查看Laura的答案。

如何列出Rails中的所有自动加载路径

在Rails控制台中,当我执行此操作时,它只列出添加到配置中的自定义路径:

$ rails c
Loading development environment (Rails 3.2.9)
1.9.3p194 :001 > MyRailsApp::Application.config.autoload_paths
=> [] 
更新:请使用下面的ActiveSupport::Dependencies.autoload_路径查看Laura的答案。我在这里留下了这个答案作为替代方法

在Rails应用程序模块中包含的
Rails::Engine
中,有以下方法:

def _all_autoload_paths
  @_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq
end
因此,您可以选择:

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

或者只是:

MyRailsApp::Application._all_autoload_paths
Rails 3.2.9中的默认结果是:

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

这应该包括由其他gem和自定义加载路径添加的所有自动加载路径。

您可以通过
ActiveSupport::Dependencies.autoload\u路径访问所有自动加载路径。

从控制台调用它或从命令行运行
railsr'putsactivesupport::Dependencies.autoload_path'

更多信息(适用于Rails 4,但也适用于Rails 3):

在Rails 5中工作,也在Rails 6中工作!
["/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"]
Rails.application.instance_variable_get(:"@_all_autoload_paths")