Ruby on rails 如何以编程方式列出RoR引擎中的所有控制器和操作?

Ruby on rails 如何以编程方式列出RoR引擎中的所有控制器和操作?,ruby-on-rails,Ruby On Rails,这个问题是本次讨论中提出的问题的延伸: 似乎大多数列出应用程序控制器和操作的解决方案都使用导入和解析#{RAILS_ROOT}/app/controllers 我一直在构建和使用RoR引擎,这些引擎位于35;{RAILS_ROOT}/vendor/plugins/ 如何将这些列出来列出每个引擎的控制器和操作?奇怪的是,仅仅写一个问题就可以帮助你解决问题。通过运行以下命令,我可以通过简单地包括发动机控制器来实现这一点: Find.find(File.join(RAILS_ROOT, 'vendor

这个问题是本次讨论中提出的问题的延伸:

似乎大多数列出应用程序控制器和操作的解决方案都使用导入和解析#{RAILS_ROOT}/app/controllers

我一直在构建和使用RoR引擎,这些引擎位于35;{RAILS_ROOT}/vendor/plugins/


如何将这些列出来列出每个引擎的控制器和操作?

奇怪的是,仅仅写一个问题就可以帮助你解决问题。通过运行以下命令,我可以通过简单地包括发动机控制器来实现这一点:

Find.find(File.join(RAILS_ROOT, 'vendor/plugins/'))  { |name|  
    require_dependency(name) if /_controller\.rb$/ =~ name
}

这已经很旧了,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

您好,我在生产模式中有未初始化的常量Rails::Application::RouteInspector。