2

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

rake routes

在 Roda 应用程序中是否有内置方法可以做到这一点?

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

4

1 回答 1

2

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

正如文档所说:

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

一个需要最少努力的简单解决方案是使用该roda-route_list插件,但它需要在文件中每个路由的顶部进行解释性注释app.rb,如下所示:

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

(检查文档以了解其他可能性)

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

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

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

希望能帮助到你!

于 2016-09-17T20:57:22.530 回答