Flatfoot
Flatfoot is a synonym for tracker. As the name RenderTracker seemed generic, and gumshoe my favorite was taken.
This gem will help you track unused views in your application.
Installation
Add this line to your application's Gemfile:
gem 'flatfoot'
And then execute:
$ bundle
Or install it yourself as:
$ gem install flatfoot
Usage
To use this gem, just initialize it in some initializer like config/initializers/notifications.rb
then create an instance and subscribe it to ActiveSupport::Notifications
events.
FLATFOOT = Flatfoot::Tracker.new(Redis.new)
ActiveSupport::Notifications.subscribe /render_partial.action_view|render_template.action_view/ do |name, start, finish, id, payload|
FLATFOOT.track_views(name, start, finish, id, payload) unless name.include?('!')
end
Start up your app and then in console you can check used views or unused views
FLATFOOT.used_views
=> ["app/views/layouts/_old_layout.html.erb",...
FLATFOOT.unused_views
=> ["app/views/something/_old_partial.html.erb",...
After making changes deploying or just to clear out the Redis size you can clear the saved data.
FLATFOOT.reset_recordings
If you set the FLATFOOT
constant in a initializer you can also use the included rake tasks. Edit your Rakefile
and add
require 'flatfoot/tasks'
Then you should have tasks to help view the flatfoot data
rake flatfoot:reset # reset tracked views
rake flatfoot:unused # report unused views
rake flatfoot:used # report used views
Customising Targets
Flatfoot default lookup is app/views/**/*.html.erb
rejecting all mailer views.
This will cover many apps but sometimes your project has different characteristics as:
- using other view markup language as Haml;
- using different folder structure (engines, for example), or;
- you want to analyze parts of your app (/admin, for example).
The only change you need in your initialize is define your target during tracker initialization as example below:
target = Dir.glob("app/views/admin/**/*.html.haml").reject do |file|
file.match(/(_mailer)/)
end
FLATFOOT = Flatfoot::Tracker.new(Redis.new, options: { target: target })
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
MIT LICENSE
view the LICENSE.txt for details