Rails - Get unused routes of your rails applications
Learned from Get unused routes of your rails app
When our rails applicaiton become larger, there are many unused routes appeared. You define it in routes.rb file, but you don’t define action in controllers.
This script will help to list down all possible unused routes
Rails.application.eager_load!
unused_routes = {}
# Iterating over all non-empty routes from RouteSet
Rails.application.routes.routes.map(&:requirements).reject(&:empty?).each do |route|
name = route[:controller].camelcase
next if name.start_with?("Rails")
controller = "#{name}Controller"
if Object.const_defined?(controller) && !controller.constantize.new.respond_to?(route[:action])
# Get route for which associated action is not present and add it in final results
unless Dir.glob(Rails.root.join("app", "views", name.downcase, "#{route[:action]}.*")).any?
unused_routes[controller] = [] if unused_routes[controller].nil?
unused_routes[controller] << route[:action]
end
end
end
puts unused_routes
# {"HomeController"=>["edit", "update", "update", "destroy"]}
Just put this code to rails console, or create a file get-unused-routes.rb
in the root directory of
Rails application and run ruby get-unused-routes.rb