Skip to content

Instantly share code, notes, and snippets.

@dux
Last active December 24, 2024 12:48
Show Gist options
  • Save dux/b9dc0291979152618a5b5d93366f3a13 to your computer and use it in GitHub Desktop.
Save dux/b9dc0291979152618a5b5d93366f3a13 to your computer and use it in GitHub Desktop.
# config/initializers/local/template_logger.rb
def magenta text
"\e[35m#{text}\e[0m"
end
ActiveSupport::Notifications.subscribe(/render/) do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
tpl = event.payload[:identifier].sub Rails.root.to_s, '.'
Thread.current[:local_templates][tpl] ||= -1
Thread.current[:local_templates][tpl] += 1
end
ActiveSupport::Notifications.subscribe("start_processing.action_controller") do |*args|
Thread.current[:local_controller] = "#{args[4][:controller]}##{args[4][:action]}"
Thread.current[:local_templates] = {}
end
ActiveSupport::Notifications.subscribe("process_action.action_controller") do
puts magenta "Templates in use for #{Thread.current[:local_controller]}"
Thread.current[:local_templates].keys.sort
.each do
cnt = Thread.current[:local_templates][_1]
name = " #{_1}"
name += " (#{cnt})" if cnt > 1
name = magenta(name) unless name.include?('kaminari') || name.include?('layouts')
puts name
end
end
# example output in clonosle
Templates in use for OrdersController#new
./app/views/individuals/_modal.html.erb
./app/views/kaminari/_gap.html.erb
./app/views/kaminari/_last_page.html.erb
./app/views/kaminari/_next_page.html.erb
./app/views/kaminari/_page.html.erb (9)
./app/views/kaminari/_paginator.html.erb
./app/views/kaminari/_per_page.html.erb
./app/views/layouts/_account_nav.html.erb
./app/views/layouts/_flash_notice.html.erb
./app/views/layouts/_main_offcanvas.html.erb
./app/views/layouts/_nav_item.erb (33)
./app/views/layouts/_top_action.html.erb
./app/views/layouts/_top_nav.html.erb
./app/views/layouts/application.html.erb
./app/views/orders/_player_view.html.erb
./app/views/orders/new.html.erb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment