Recipe 10.8. Displaying Object Contents with Exceptions


Problem

When working on an a controller's action in development, you want to inspect the contents of any object in your browser.

Solution

Use the raise method of the Kernel module, passing it the string representation of an object as the only argument. This triggers a RuntimeError exception that outputs the contents of the string argument to your browser when the action is invoked. For example, to get a quick dump of all the student records contained in the @students instance variable, you could use raise like this:

def list   @student_pages, @students = paginate :students, :per_page => 10   raise @students.to_yaml end

Now when you try to view the student list with a browser, you should see the standard Rails error page complaining about a RuntimeError in StudentsController#list, as expected, but you'll also see the YAML output of the @students object:

---  - !ruby/object:Student    attributes:      name: Jack     class: "Junior"     id: "1" - !ruby/object:Student    attributes:      name: Sara     class: "Senior"     id: "2" - !ruby/object:Student    attributes:      name: Emily     class: "Freshman"     id: "3"

Discussion

While triggering exceptions isn't the most elegant debugging solution, it's often all you need to quickly inspect the content of a variable. The benefit is that you don't have to alter your view code at all.

See Also

  • Section 10.7"




Rails Cookbook
Rails Cookbook (Cookbooks (OReilly))
ISBN: 0596527314
EAN: 2147483647
Year: 2007
Pages: 250
Authors: Rob Orsini

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net