Rails: 找到不再匹配任何控制器的 routes/methods
Rails: find routes/methods which no longer match any controller
我有一个巨大的单体 Rails 存储库,其中包含几千条路由。
随着时间的推移,开发人员要么删除了映射到现有控制器的路由,要么删除了仍然有路由映射到它的控制器
有没有一种聪明的方法可以让我在我的 rails 应用程序中系统地发现这些异常并进行清理?
注意:请假设这些不匹配不会出现面向用户的问题,而只是出于维护目的 trim 错误路由的数量
没有这样的命令可以找到你:
但是您可以做一件事:
运行 命令:
rails routes > routes.rb
它会将你所有的路线写在一个文本文件中,如果你有时间,你可以手动匹配它们。
但是,如果您在 Rails 应用程序中存在额外的路由,这在大多数 Rails 应用程序中很常见。
我发现这个 gem 旨在稍微解决我的问题
traceroute gem 看起来很不错,但以防万一它无法按预期工作,您可以在 rails 控制台中执行此操作。
获取所有控制器及其操作的数组:
ApplicationController.descendants.map {|c| [c, c.action_methods]}
获取所有路线的数组:
Rails.application.routes.routes.map &:defaults
然后您可以遍历两个数组,选择出现在一个数组中但不出现在另一个数组中的动作。
在 config/environments.development.rb
中启动控制台之前设置 config.eager_load = true
。没有这个,您将看不到所有控制器。
我有一个巨大的单体 Rails 存储库,其中包含几千条路由。 随着时间的推移,开发人员要么删除了映射到现有控制器的路由,要么删除了仍然有路由映射到它的控制器
有没有一种聪明的方法可以让我在我的 rails 应用程序中系统地发现这些异常并进行清理?
注意:请假设这些不匹配不会出现面向用户的问题,而只是出于维护目的 trim 错误路由的数量
没有这样的命令可以找到你:
但是您可以做一件事:
运行 命令:
rails routes > routes.rb
它会将你所有的路线写在一个文本文件中,如果你有时间,你可以手动匹配它们。
但是,如果您在 Rails 应用程序中存在额外的路由,这在大多数 Rails 应用程序中很常见。
我发现这个 gem 旨在稍微解决我的问题
traceroute gem 看起来很不错,但以防万一它无法按预期工作,您可以在 rails 控制台中执行此操作。
获取所有控制器及其操作的数组:
ApplicationController.descendants.map {|c| [c, c.action_methods]}
获取所有路线的数组:
Rails.application.routes.routes.map &:defaults
然后您可以遍历两个数组,选择出现在一个数组中但不出现在另一个数组中的动作。
在 config/environments.development.rb
中启动控制台之前设置 config.eager_load = true
。没有这个,您将看不到所有控制器。