← Blog

List all Rails helper methods

Just wanted to share a snippet of code to get all Rails helper methods:

def get_helper_modules(subtree = [])
  helper_directory = Rails.root.join('app').join('helpers')
  subtree.each do |folder|
    helper_directory = helper_directory.join(folder)
  end
  entries = Dir.entries(helper_directory) - %w(. ..)
  files = entries.select { |e| e.include?('.rb') }
  modules = files.map do |file|
    module_name = subtree.map(&:camelcase).join('::')
    if module_name.present?
      module_name += '::'
    end
    class_name = file.gsub('.rb', '').camelcase
    (module_name + class_name).constantize
  end
  directories = entries.reject { |e| e.include?('.rb') }
  directories.each do |dir|
    modules.concat get_helper_modules(subtree + [dir])
  end
  modules
end

methods = get_helper_modules.map(&:public_instance_methods).flatten
puts methods