Skip to content

Instantly share code, notes, and snippets.

Created November 29, 2011 07:17
  • Star 1 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Find unused helpers in a Rails app (slow)
#!/usr/bin/env ruby
# Shotgun approach (read: slow and dirty hack) to help find unused helpers in a Rails application
puts "Loading all source files into memory :("
source = {}
Dir["app/**/**/*.*"].each do |f|
source[ f ] = File.readlines( f )
puts "#{source.size} files loaded into memory"
helpers = []
source.keys.grep(/app\/helpers/).each do |f|
code = source[ f ]
code.each do |line|
if line =~ /def ([^\(\s]+)/
helpers << $1.chomp
puts "Scanning for #{helpers.size} helpers"
# combine the source code
complete_code = source.values.flatten
# Find occurances
helpers.each do |name|
found = false
complete_code.each do |line|
next if line =~ /def #{name}/
found = true if line =~ /#{name}/
puts "No traces found of #{name}..." unless found
Copy link

kylefox commented Mar 28, 2019

I rewrote some of this to be much faster (about 80% faster in my case):

@cheshire137 As @markoa mentioned, you likely ran into the UTF errors while processing a binary file (i.e. a bitmap image). My update whitelists the file types to search, which avoids the UTF error and greatly speeds up the script overall.

@tylerlee FYI your change seems to cause every single helper to be flagged as unused because you're checking the line against the literal 'UTF-'8' string.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment