Quickstart: Debugging Ruby on Rails Applications

This post is for those that are new to Ruby on Rails, or those that have not spent the time learning the various debugging techniques. The objective is to get you quickly up to speed on how to debug your Ruby on Rails application.

Version control is essential, along with the practice of frequent commits with meaningful comments. Even when its just a one-person team. That way, any time you get stuck, you can execute a diff and easily see what was changed before you, or the person you outsourced to, messed everything up.

If you will host subversion locally on your machine, here is what you need to get started. Then, take a look at this to learn about usage and management. If you prefer to let someone else host subversion, there are many service providers that will do that for you. Our team uses DreamHost. We set up the repository ourselves with no problem.

In Windows, check out Tortoise SVN, and if you use Eclipse or Aptana, check out the subClipse plugin.

Unit Tests

When you are in an environment where you are rapidly introducing features, it becomes easier to break parts of the code and not realize it until it is too late. Unit tests help minimize this problem by alerting you when a part of your code does not perform as anticipated.

Ruby on Rails includes unit test functionality out of the box, which you should take advantage of from day one. Here is a great resource to get started. If you are new to the concept, take a look here and here.

Exception Handling

If there exists areas of your code where, if broken, cause natural disasters (thats an exaggeration of course, but I wanted to emphasize that this technique is to be used in exceptional cases), then you will want to employ exception handlers. Take a look here for a quick and easy example.


When I encounter errors, a frequent resource of finding the root cause are the web server logs. Learn the location of these logs in your development environment. Check these resources for detailed information about the log locations and contents for Apache, Mongrel (see the “super debugging with rails” section) and LightHTTP (see the “where things will end up” section).

Ruby on Rails uses Ruby‘s standard logger for easy logging capabilities. Here is a great starting point.


Sometimes you will find it useful to cause a break to happen while running your code so that you can get a snapshot of the state. Ruby Debug allows you to easily utilize breakpoints while debugging.

Whats your favorite Ruby on Rails debug method?

Speak Your Mind