在 Rails 中,我通过以下方式查看我定义的所有路线:
rake routes
在 Roda 应用程序中是否有内置方法可以做到这一点?
如果没有,Roda 开发人员是否有一种通用模式来快速查看所有路线(可能是某种 Rake 任务?)
自动是不可能的。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
也许有比这个片段更优雅的解决方案,但它有效:)
希望能帮助到你!