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文件中添加任何内容。测试助手将在测试开始时自动执行此操作。有道理?