我有一個包含數千條路線的龐大的單體 Rails 存盤庫。隨著時間的推移,開發人員要么洗掉了映射到現有控制器的路由,要么洗掉了仍然映射到它的路由的控制器
有沒有一種聰明的方法可以在我的 Rails 應用程式中系統地找到這些例外來清理它?
注意:請假設這些不匹配不會出現面向用戶的問題,而僅僅是出于維護目的,以減少錯誤路由的數量
uj5u.com熱心網友回復:
traceroute gem 看起來非常漂亮,但如果它不能按您預期的那樣作業,您可以在 rails 控制臺中執行此操作。
獲取所有控制器及其操作的陣列:
ApplicationController.descendants.map {|c| [c, c.action_methods]}
獲取所有路線的陣列:
Rails.application.routes.routes.map &:defaults
然后您可以遍歷這兩個陣列,選擇出現在一個陣列中但不在另一個陣列中的動作。
在啟動控制臺之前設定config.eager_load = true在config/environments.development.rb. 沒有這個,您將看不到所有的控制器。
uj5u.com熱心網友回復:
沒有這樣的命令會找到你:
但是你可以做一件事:
運行命令:
rails routes > routes.rb
它將把你所有的路線寫在一個文本檔案中,如果你有時間,你可以手動匹配它們。
但是,如果您在 Rails 應用程式中存在額外的路由(這在大多數 Rails 應用程式中很常見),也沒有什么壞處。
uj5u.com熱心網友回復:
我找到了這個旨在解決我的問題的寶石
https://github.com/amatsuda/traceroute
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482372.html
