Render Debugging Toolbar for Rails
If you are looking at the front end of a Rails app and see something you want to
work on, there are several ways you might answer the question:
Which template is rendering that particular chunk of HTML?
If you have simple views, logical markup and your URLs map very quickly to
views, then you can probably just open your editor and guess pretty much
exactly where you need to edit. You're in the Rails happy place, and you
probably don't need a tool to help you.
If you're working on a less-happy Rails application, however, you might have
some of the following impediments:
- hundreds of similarly-named views
- complex views with partials within partials
- URLs that don't map so easily quickly and obviously to view filenames
- markup without obviously unique patterns to search for
I was in this situation recently; I found myself wishing for something
to just tell me where the HTML was coming from.
The Render Debugging Toolbar helps you find your view
There are tools that let you interactively point at the different parts of
your page and tell you a bunch of back-end information.
Drupal has the Drupal Theme Developer, Django has the
Django Debug Toolbar, but I couldn't find anything to
help me out when I asked Rails the same question of this Rails app:
"What is generating that HTML right there?"
The Render Debugging Toolbar aims to be that tool for Rails.
Installation
Add the following to the "development" group in your Gemfile:
gem "rails-render-debugging-toolbar"
Bundler will take care of the rest when you run
bundle install
If you're not using Bundler, you won't have a Gemfile, so you'll need
to install the gem manually.
Usage
The toolbar needs a lot of extra markup to do its work, so you probably won't
want to leave it enabled all the time. You can turn it on for a single request
by adding the query parameter "?debug=render" to a request.
For example, if you are interested in the page:
http://localhost:3000/examples/new
You can try the toolbar by visiting the following:
http://localhost:3000/examples/new?template_debug
When the toolbar is enabled, you should see a little debugging checkbox overlaid
on top of the normal page. Switch it on, and then everything you point at should
show a panel of debugging information about what rendered it.
Simply point at the element you're interested in, and the panel will tell you
where the view is.
Dependencies
The Rails Debugging Toolbar works with Rails 2.3.5 for sure, and it should
work with Rails 3.0.0 as well.
The toolbar also needs jQuery to do its job, and will load jQuery automatically
if it's not already on the page. One day I would like to make the toolbar work
with no external dependencies but right now I'm happy with jQuery.
License
Copyright 2011 Rob Hunter and ThoughtWorks, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.