【发布时间】:2019-03-24 06:28:36
【问题描述】:
有没有办法验证config/routes.rb 中定义并由rake routes 公开的所有控制器操作实际上对应于现有控制器操作?
例如,假设我们有以下路由文件:
Application.routes.draw do
resources :foobar
end
还有以下控制器:
class FoobarsController < ApplicationController
def index
# ...
end
def show
# ...
end
end
我想用某种方式自动检测 create、new、edit、update 和 destroy 操作(由路由隐式定义)未映射到有效的控制器操作 - 这样我就可以修复 routes.rb 文件:
Application.routes.draw do
resources :foobar, only: [:index, :show]
end
如果愿意的话,对路线进行“完整性检查”。
这样的检查不一定是完美的;我可以轻松地手动验证任何误报。 (虽然“完美”检查是理想的,因为它可以包含在测试套件中!)
我的动机是防止不可靠的 API 请求引发 AbstractController::ActionNotFound 异常,因为无意中定义了额外的路由(在大型应用程序中)。
【问题讨论】:
-
您也许可以创建一个路由测试/规范,遍历
Rails.application.routes并测试每个路由。
标签: ruby-on-rails ruby routes url-routing