Chapter 11. Debugging

When you’re first starting out in Rails, it’s easy to wonder what exactly is going on at any given moment. Web applications by their very nature are tricky to debug, as so much happens before you see an answer. Fortunately, Rails includes tools to figure out what’s going wrong while applications are running. Debugging tools keep evolving, but there’s a basic set you should understand from the beginning.

Creating Your Own Debugging Messages

I’m sure it was facetious, but an old programmer once told me that “the real reason the PRINT statement was invented was for debugging.” While it may not be aesthetically pleasing to dump variable values into result screens, it’s often the easiest thing to do in early development. All controller instance variables are available to the view, so if you want to see what they contain, you can just write something like:

<%= @student %>

to display the contents of @student. However, if the object has much complexity and isn’t just a string, it will insert something like:

#<Student:0x21824f8>

into the HTML for the page. All you’ll see is the #.

Rails does, however, offer a way to make this more useful. The DebugHelper class offers a helper method named debug. While it won’t magically debug your programs, it will present these kinds of messages in a slightly prettier form, as YAML (Yet Another Markup Language). Instead of <%= @student %>, for example, you could write <%= debug(@student) %>. The debug method would give you:

--- !ruby/object:Student 
attributes: 
  start_date: "2006-09-12"
  updated_at: 2008-07-17 23:04:03
  id: "2"
  family_name: Stim
  given_name: Milletta
  date_of_birth: "1989-02-02"
  created_at: 2008-07-03 18:34:59
  grade_point_average: "3.94"
  middle_name: Zorgas
attributes_cache: {}

If you need to take a quick look at what’s happening and see it on the page where it’s happening, this can be a useful technique.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset