2

给定一个方法和路径,我想询问 Rails 如何路由该请求,并且我希望能够从控制台和/或 rake 任务执行此操作。我认为这应该很简单——ActionDispatch 对每个请求都这样做,路由测试方法显然也这样做。

(目前:Rails 3.0.x,但对于我正在编写的 gem,我至少需要能够在 Rails 3.0 到 4.1 中执行此操作,并且可能在旧版本中也是如此。)

我一直在尝试这样的一些事情:

routes = ActionDispatch::Routing::RouteSet.new
routes.recognize_path('/my/path/23/edit')

或者

Rails.application.routes.recognize_path('/my/path/23/edit')

在这两种情况下,我都会返回“RuntimeError: route set not finalized”。

我正在慢慢研究 ActionDispatch 代码,但如果有人知道他们头脑中的答案,那将为我节省大量时间。所以谢谢!

4

1 回答 1

3

规范的答案实际上是在我的问题中给出的:

# GET request
Rails.application.routes.recognize_path('/some/path/63') 

# POST request
Rails.application.routes.recognize_path('/some/path', {:method => :post })

看起来这不起作用,因为我之前尝试过手动初始化 RouteSet,这干扰了环境正确加载路由的能力。当我重新启动控制台会话时,上述命令运行良好。

于 2014-06-27T17:38:30.117 回答