在 Roda 应用程序中列出所有路线
List All Routes in a Roda app
在Rails中我查看了我定义的所有路由:
rake routes
是否有在 Roda 应用程序中执行此操作的内置方法?
如果没有,是否有 Roda 开发人员用来快速查看所有路由的通用模式(也许是某种 Rake 任务?)
自动是不可能的。 roda
路由在收到请求时动态评估,因此它们不会事先加载并存储在某处可用的数据结构中。
正如 documentation 所说:
The route block is called whenever a new request comes in. It is yielded an instance of a subclass of Rack::Request with some additional methods for matching routes.
一个简单的解决方案,需要最少的努力,就是使用 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
也许有比这个片段更优雅的解决方案,但它有效:)
希望对您有所帮助!
在Rails中我查看了我定义的所有路由:
rake routes
是否有在 Roda 应用程序中执行此操作的内置方法?
如果没有,是否有 Roda 开发人员用来快速查看所有路由的通用模式(也许是某种 Rake 任务?)
自动是不可能的。 roda
路由在收到请求时动态评估,因此它们不会事先加载并存储在某处可用的数据结构中。
正如 documentation 所说:
The route block is called whenever a new request comes in. It is yielded an instance of a subclass of Rack::Request with some additional methods for matching routes.
一个简单的解决方案,需要最少的努力,就是使用 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
也许有比这个片段更优雅的解决方案,但它有效:)
希望对您有所帮助!