Rails Recipes Book: Authentication

Define this method in a module. Then do a "require" in a superclass and now you can use it in any of the sub-classes without explicit require statement.

I put this in a utilities.db file while I'm debugging:

require 'pp'

def dbg *args   if ENV['RAILS_ENV'] == 'test'     stack = caller(1).slice(0, 4)     $stdout << "==========================\n"     pp(*args)     pp stack   else     def dbg(*args)     end   end end

I'll frequently change the slice size for the stack trace (0 to large) depending on what I'm doing, or add little snippets of code to do particular things with args. I think of it more like a debugger macro than actual code.

Defining dbg (or whatever you want to call it) for all objects means you don't have to put in include statements, making it slightly easier to remove when you're no longer debugging.

I usually don't use the logger for debugging printf. Most of the time I want to see those debug statements on stdout/stderr when I'm running tests, and if I'm not running tests I don't care about them.

- James Moore