如何从引擎获取安装了我的引擎的应用程序的路由?

时间:2019-04-17 13:01:51

标签: ruby-on-rails ruby ruby-on-rails-5 rails-engines

我想通过引擎中编写的代码列出来自引擎的应用程序中存在的所有路由,例如使用以下命令获取应用程序中的应用程序路由:

routes = Rails.application.routes.routes
routes.collect {|r| r.path.spec.to_s }

上面的命令列出了主应用程序中可用的路由

1。引擎中用于提取“引擎中”应用程序路由的代码是什么?

如果我在引擎中使用以上代码,则无法获取路由

1 个答案:

答案 0 :(得分:1)

引擎Rails.application.routes.routes中将是其父应用程序的路由。

YourEngineClass::Engine.routes.routes将是引擎的路由(请记住,这些路由将不具有来自主应用程序的路由前缀)

更新:应用初始化后即可使用路由。为了使它们在耙中可用,您需要使您的任务依赖于:environment

namespace :your_engine do
  desc "test"
  task some_task: :environment do
    puts "Routes:"
    puts Rails.application.routes.routes.collect {|r| r.path.spec.to_s }.join("\n")
  end 
end