列出Roda应用程序中的所有路由

时间:2016-09-17 04:37:06

标签: ruby rake roda

在Rails中,我通过以下方式查看我定义的所有路由:

rake routes

在Roda应用程序中是否有内置方法可以执行此操作?

如果没有,Roda开发人员是否会使用一种常见的模式来快速查看所有路由(可能是某种Rake任务?)

1 个答案:

答案 0 :(得分:1)

无法自动进行。当请求进入时会动态评估roda个路由,因此它们之前不会被加载并存储在某个地方可用的数据结构中。

正如documentation所说:

  

每当有新请求进入时,都会调用路由块。它会产生一个Rack :: Request子类的实例,以及一些用于匹配路由的其他方法。

一个简单的解决方案,只需要很少的工作就可以使用roda-route_list插件,但它需要app.rb文件中每条路径顶部的解释性注释,如下所示:

# route: /path/to/foo
# route: GET /path/to/foo
# ...

(查看documentation了解其他可能性)

然后你必须创建一个包含路由元数据的json文件,你可以这样做启动roda-route_list插件附带的脚本

roda-parse_routes -f routes.json app.rb

它会在您应用的根目录中创建文件routes.json,最后您可以列出以下路线:

route_list # => [{:path=>'/path/to/foo', :methods=>['GET', 'POST']}]
# (it is an Array of route metadata hashes)

您还可以创建一个简单的rake任务来列出所有路径,如下所示:

# Rakefile
require 'roda'

namespace :routes do
  task :list do |task|
    class App < Roda
      plugin :route_list
      puts route_list
    end
  end
end

也许有一个比这个片段更优雅的解决方案,但它有效:)

希望它有所帮助!