• Stars
    star
    877
  • Rank 52,062 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 13 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Rake task gem that helps you find the unused routes and controller actions for your Rails 3+ app

Traceroute

A Rake task that helps you find dead routes and unused actions in your Rails 3+ app.

Features

This Rake task investigates your Rails application’s routes definition, then shows you the unused routes and unreachable action methods.

Supported versions

  • Ruby 1.8.7, 1.9.2, 1.9.3, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1 (trunk)

  • Rails 3.0.x, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 5.0.x, 5.1.x, 5.2.x, 6.0, 6.1, 7.0 (master)

Install

Put this line in your Gemfile:

gem 'traceroute'

Then bundle:

% bundle

Usage

Just run the following command in your Rails app directory.

% rake traceroute

If you want the rake task to fail when errors are found.

% FAIL_ON_ERROR=1 rake traceroute

What’s gonna happen then?

Consider you have the following routes.rb and a controller:

# config/routes.rb
YourRailsApp::Application.routes.draw do
  resources :users, :only => [:index, :show, :new, :create]
  match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def index
    @users = User.page(params[:page])
  end

  def index2
  end

  def show
    @user = User.find(params[:id])
  end
end

Running the Rake task will print something like this for you:

Unused routes (3):
  users#create
  users#new
  catalog#purchase
Unreachable action methods (1):
  users#index2

OMG super helpful, isn’t it?

How do I tell it to ignore routes?

Some gems out there that inject routes or actions into our app for testing. Jasmine-Rails does this. They can give you false negatives when running this in development mode. It can be useful to ignore said routes or actions.

Create a .traceroute.yaml (or .traceroute.yml or .traceroute) file in your root directory.

# .traceroute.yaml
ignore_unreachable_actions:
- ^jasmine_rails\/
ignore_unused_routes:
- ^users#index

Both yaml headers accept a list of regexes.

FAQ

Q: It makes a fuss over the default route at the very bottom. WTF?
A: Please do not use that. Did you read the comment in your routes.rb? Actually this task will help you a lot to remove that evil route.

Q: "command not found: traceroute" Did you mean: tracert
A: I'm afraid you're using the wrong operating system.

Questions, Feedback

Feel free to message me on Github (amatsuda) or Twitter (@a_matsuda) ☇3☇3☇3

Contributing to Traceroute

  • Fork, patch, then send me a pull request.

Copyright © 2011 Akira Matsuda. See MIT-LICENSE file for further details.

More Repositories

1

jb

A simple and fast JSON API template engine for Ruby on Rails
Ruby
1,235
star
2

active_decorator

ORM agnostic truly Object-Oriented view helper for Rails 4, 5, 6, and 7
Ruby
1,051
star
3

heavens_door

Capybara test scenario recorder for Rails
JavaScript
863
star
4

database_rewinder

minimalist's tiny and ultra-fast database cleaner
Ruby
807
star
5

stateful_enum

A very simple state machine plugin built on top of ActiveRecord::Enum
Ruby
606
star
6

kaminari_themes

HTML
354
star
7

erd

A Rails engine for drawing your app's ER diagram
Ruby
332
star
8

html5_validators

A gem/plugin for Rails 3, Rails 4, Rails 5, and Rails 6 that enables client-side validation using ActiveModel + HTML5 Form Validation
Ruby
304
star
9

i18n_generators

A pack of Rails generators gem plugin that generates Rails 3 and Rails 2 I18n locale files for almost every known locale.
Ruby
285
star
10

himl

HTML-based Indented Markup Language for Ruby
Ruby
235
star
11

still_life

Rails upgrade's best friend
Ruby
216
star
12

gem-src

Gem.post_install { `git clone gem_source src` }
Ruby
208
star
13

motorhead

A Rails Engine framework that helps safe and rapid feature prototyping
Ruby
181
star
14

nested_scaffold

Nested scaffold generator for Rails 4.2 and 5
Ruby
176
star
15

roundabout

A Rails Engine that generates a page transition diagram for your Rails app from request specs
Ruby
153
star
16

rfd

Ruby on Files & Directories
Ruby
152
star
17

routes_lazy_routes

A boot time booster for Ruby on Rails that defers loading the whole bloody routes so the app can spin up quickly 🤘
Ruby
141
star
18

string_template

A template engine for Rails, focusing on speed, using Ruby's String interpolation syntax
Ruby
125
star
19

kawaii_validation

An ActiveRecord extension that adds more kawaii validation syntax
Ruby
117
star
20

interactive_rspec

RSpec on IRB
Ruby
86
star
21

hocus_pocus

A magical isolated engine gem for Rails 3.1+
Ruby
80
star
22

ljax_rails

render :partial lazy-loader for Rails
Ruby
66
star
23

everywhere

Hash condition syntax for AR query everywhere!
Ruby
58
star
24

kaminari_example

A tutorial project for the basic and advanced usage of Kaminari paginator
Ruby
45
star
25

async_partial

Ruby
33
star
26

turbo_partial

Ruby
27
star
27

future_records

Ruby
25
star
28

lightweight_attributes

Ruby
24
star
29

more_optimized_resolver

Ruby
23
star
30

turbo_urls

Ruby
22
star
31

teriyaki

Automatically imports *_path definitions from config/routes.rb for acceptance testing
Ruby
22
star
32

kawaii_association

An ActiveRecord DSL extension that provides kawaii association syntax
Ruby
21
star
33

arel_ruby

ARel Ruby visitor
Ruby
20
star
34

activerecord-refinements

ActiveRecord + Ruby 2.0 refinements
Ruby
20
star
35

polymorphic_url_cache

Ruby
17
star
36

gem_i

A RubyGems plugin that explicitly aliases `gem i` to `gem install` to avoid ambiguity
Ruby
17
star
37

speed_king

Ruby
14
star
38

nested_layouts

The only fork of "nested_layouts" Rails plugin in Github that correctly bug fixed for Rails 2.3
Ruby
13
star
39

rspec-refinements

RSpec + Ruby 2.0 refinements
Ruby
10
star
40

arenai

Ruby
8
star
41

activecalendar

Rails 2.2.2 ready javascript calendar date renderer
JavaScript
8
star
42

bundler-squash

Ruby
8
star
43

rbenv-gem-shared

Ruby
8
star
44

tatsuzine

Live coded app at Rails勉強会@東京#59
Ruby
8
star
45

bot_for_ruby-lang

Ruby
7
star
46

factory_factory

a script that transfers existing AR models into factories for factory_girl
Shell
6
star
47

automagic

Ruby
6
star
48

snowman_meltdown

A simple middleware for Rails 3 to vanish _snowman parameter☃☃☃
Ruby
5
star
49

activesupport-refinements

Ruby
4
star
50

webdb073_tutorial

WEB+DB Press Vol. 73 特集2「詳解Rails 4」のチュートリアルのサンプルコード
Ruby
4
star
51

gitrockets

Ruby
3
star
52

rails3_hands_on

東京Ruby会議03のワークショップ「Rails 3ハンズオン」のサンプルアプリケーション
Ruby
3
star
53

prsnt

prsnt prttyp
3
star
54

git_commands

3
star
55

internationalization

Ruby
3
star
56

qwik

qwik
2
star
57

hfrails

hfrails
2
star
58

atode_yomu

A gem plugin that cleverly installs rdoc and ri for the latest versions of already installed gems
Ruby
2
star
59

gem-diet

Ruby
2
star
60

action_args_with_rbs

Ruby
1
star