【问题标题】:How to programmatically list all controllers and actions in RoR engines?如何以编程方式列出 RoR 引擎中的所有控制器和操作?
【发布时间】:2010-11-11 01:07:11
【问题描述】:

这个问题是本次讨论中提出的问题的延伸:How to programmatically list all controllers in Rails

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

我一直在构建和使用 #{RAILS_ROOT}/vendor/plugins/ 中的 RoR 引擎

如何包含这些以列出每个引擎的控制器和操作?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    奇怪的是,仅仅写出一个问题就可以帮助您解决问题。我可以通过运行简单地包含引擎的控制器来完成这项工作:

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

    【讨论】:

      【解决方案2】:

      这已经很老了,rails 3 改变了很多东西。随着事情的变化,我不得不经历大约 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。
      猜你喜欢
      • 2010-12-06
      • 2011-02-07
      • 2010-11-13
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多