我想通过引擎编写的代码列出应用程序中存在的所有路由,例如使用以下方法获取应用程序中的应用程序路由:
routes = Rails.application.routes.routes
routes.collect {|r| r.path.spec.to_s }
上面的命令列出了主应用程序中可用的路由
1. 引擎中用于获取"引擎中"应用程序路由的代码是什么?
如果我在引擎中使用上述代码,我将无法获取路由
在引擎中Rails.application.routes.routes
将是其父应用程序的路由。
YourEngineClass::Engine.routes.routes
将是引擎的路线(请记住,这些路线没有来自主应用程序的路线前缀(
更新:应用初始化后,路由可用。为了使它们在 rake 中可用,您需要使您的任务依赖于: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