Ruby on rails 动态地将路线添加到rails路线的开头

Ruby on rails 动态地将路线添加到rails路线的开头,ruby-on-rails,Ruby On Rails,对于我正在使用的测试助手,我需要在路径的开头插入一条路径。要在末尾添加它很容易: test_routes = Proc.new do get "/#{route_root}/:id", to: "#{route_root}#test" end Rails.application.routes.eval_block(test_routes) 问题是,通常在应用程序路由列表的末尾有“catch all”路由,所以我需要将其作为第一个路由注入 我一直在这里使用这种技术: 但是它有

对于我正在使用的测试助手,我需要在路径的开头插入一条路径。要在末尾添加它很容易:

  test_routes = Proc.new do
    get "/#{route_root}/:id", to: "#{route_root}#test"
  end
  Rails.application.routes.eval_block(test_routes)
问题是,通常在应用程序路由列表的末尾有“catch all”路由,所以我需要将其作为第一个路由注入

我一直在这里使用这种技术:


但是它有黑客行为,在昨晚的一次gem更新后它坏了(不知道为什么,但它在
路由中坏了。清除!
),所以我正在寻找一个不那么黑客行为的解决方案。

为什么不这样创建您自己的模块:

 module DynamicRouter
    def self.routes router
        router.get "/#{route_root}/:id", to: "#{route_root}#test"
    end
 end
在routes.rb中,只需调用函数:

 # in routes.rb
 # first line
 DynamicRouter::routes(self)

这就是我们处理一些定制宝石的方法。你也可以对路由器进行猴子补丁,但它更具黑客性。

关键是,这最终将成为一个通用测试平台,其他人可以使用。我不想在routes.rb文件中添加任何内容。测试助手将在测试开始时自动执行此操作。有道理?