Everyday Rails

Debugging Rails apps with Rails Footnotes

By Aaron Sumner, June 10, 2010.

I live in Lawrence, Kansas; home of the Django web framework. I’m sticking with Ruby on Rails for my own work, though I’ll admit there are features in Django that would make Rails a better development experience. In particular, the first time I saw the Django Debug Toolbar I couldn’t figure out why Rails didn’t have such a utility–then I learned that we Rails developers have our own debugging tool called Rails Footnotes. You just have to install it separately.

Instructions in the gem’s README file are a little misleading. Here’s what I’ve done to get up and running in a few Rails applications.

To start, the line for installing the gem isn’t quite current–I added the following to my config/environments/development.rb file:

  config.gem "rails-footnotes", :source => "http://rubygems.org"

Then install the gem:

  $ rake gems:install

Reboot your app, and you’re good to go. Out of the box (or fresh from the command line; which is it?) Rails Footnotes gives you convenient access to session variables, cookie values, param values, a complete list of environment variables, the database queries involved in rendering your view, the tail of your environment’s log file, and other potentially useful information to help troubleshoot and optimize your Rails application.

As noted, you can add your own custom footnotes. The example note, to display information about the currently logged-in user, is useful relative to the current theme at Everyday Rails about authentication systems. The sample code is 99 percent useful as-is; however, there are a couple of issues if you’re new to Ruby and/or Rails that may throw you for a loop. Specifically:

  1. Where does the custom note code go? Create a file in your app’s lib/ directory. I just called mine footnotes.rb.
  2. Why do I get an error stating uninitialized constant Footnotes::Notes::AbstractNote when I try restarting my app? You need to add require 'rails-footnotes' to the top of your footnotes.rb file (this is not included in the example code).

Now, with that said, here’s why you might want to add custom notes with caution. I don’t know why this happens, but when I add a custom note to my configuration, Queries/DB note and the Log note both fail to yield any information. The Queries/DB note is particularly useful as it can help diagnose database bottlenecks. I’m unclear on why this is, but my workaround is to enable or disable my custom notes as needed by commenting or uncommenting the line to append your custom notes to the notes array (in the example code, this is Footnotes::Filter.notes += [:current_user]). In other words, only load your custom notes when you need them.

One final issue: As of right now, it looks like Rails Footnotes is not compatible with Rails 3. However, the project is being actively maintained on GitHub, so hopefully a Rails 3-ready version will be ready soon.

These problems aside, Rails Footnotes are very handy and I recommend checking them out. The issues I mentioned above could well be due to something I’m doing; if I find out what it is I’ll update this post as needed.

What do you think? Follow along on on Twitter or Facebook to let me know what you think and catch my latest posts. Better yet, subscribe to my newsletter for updates from Everyday Rails, book picks, and other thoughts and ideas that didn't quite fit here.

Black lives matter.

I stand with the Black community against systemic racism, police violence and brutality, intolerance, and hate in the United States and worldwide. We must all demand better from our leaders, and ourselves. Stop tolerating intolerance.

While you're here, please consider making a donation to Black Girls CODE, who do great, important work to provide opportunity to underprivileged girls interested in tech, or any organization working toward equity and safety for all, not just the privileged. Thank you.

Test with confidence!

If you liked my series on practical advice for adding reliable tests to your Rails apps, check out the expanded ebook version. Lots of additional, exclusive content and a complete sample Rails application.

Newsletter

Ruby on Rails news and tips, and other ideas and surprises from Aaron at Everyday Rails. Delivered to your inbox on no particular set schedule.