Discover dead view files in your app. Track view layer render usage
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
Gemfile
LICENSE.txt
README.md
Rakefile
flatfoot.gemspec

README.md

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

MIT LICENSE

view the LICENSE.txt for details