这个问题是对此讨论中提出的问题的延伸:How to programmatically list all controllers in Rails
似乎大多数列出应用程序控制器和操作的解决方案都使用导入和解析#{RAILS_ROOT} / app / controllers。
我一直在构建和使用位于#{RAILS_ROOT} / vendor / plugins /
中的RoR引擎如何列出每个引擎的控制器和动作?
答案 0 :(得分:2)
奇怪的是,如何写出问题可以帮助你解决问题。通过运行:
简单地包含引擎的控制器,我能够实现这一点Find.find(File.join(RAILS_ROOT, 'vendor/plugins/')) { |name|
require_dependency(name) if /_controller\.rb$/ =~ name
}
答案 1 :(得分:0)
这很老了,rails 3改变了很多东西。事情发生了变化,我不得不经历三种不同的方式。目前在rails 3.2.2上这是我最好的解决方案:
Rails.application.reload_routes!
all_routes = Rails.application.routes.routes
require 'rails/application/route_inspector'
inspector = Rails::Application::RouteInspector.new
for routeRule in inspector.format(all_routes, ENV['CONTROLLER'])
# Parse routeRule to get your values
end