# frozen_string_literal: true
desc 'Prints out unused routes and unreachable action methods' task :traceroute => :environment do
traceroute = Traceroute.new Rails.application traceroute.load_everything! unless ENV['UNREACHABLE_ACTION_METHODS_ONLY'] unused_routes = traceroute.unused_routes puts "Unused routes (#{unused_routes.count}):" unused_routes.each {|route| puts " #{route}"} end puts unless (ENV['UNREACHABLE_ACTION_METHODS_ONLY'] || ENV['UNUSED_ROUTES_ONLY']) unless ENV['UNUSED_ROUTES_ONLY'] unreachable_action_methods = traceroute.unreachable_action_methods puts "Unreachable action methods (#{unreachable_action_methods.count}):" unreachable_action_methods.each {|action| puts " #{action}"} end if ENV['FAIL_ON_ERROR'] && ((!ENV['UNREACHABLE_ACTION_METHODS_ONLY'] && unused_routes.any?) || (!ENV['UNUSED_ROUTES_ONLY'] && unreachable_action_methods.any?)) fail "Unused routes or unreachable action methods detected." end
end
namespace :traceroute do
desc 'Prints out unused routes' task :unused_routes => :environment do ENV['UNUSED_ROUTES_ONLY'] = '1' Rake::Task[:traceroute].invoke end desc 'Prints out unreachable action methods' task :unreachable_action_methods => :environment do ENV['UNREACHABLE_ACTION_METHODS_ONLY'] = '1' Rake::Task[:traceroute].invoke end
end