I'm probably misunderstanding the way things are supposed to work.   
Here's what I'm seeing:

$ cat lib.rb
class MyClass
         def throws_an_exception
                 self.non_existent_method
         end
end

if __FILE__ == $0
         MyClass.new.throws_an_exception
end
$ ruby lib.rb
lib.rb:3:in `throws_an_exception': undefined method  
`non_existent_method' for #<MyClass:0x255bc> (NoMethodError)
         from lib.rb:8

So far, this is what I expect. Now consider:

$ cat the_test.rb
require './lib'

begin
         MyClass.new.throws_an_exception
rescue => e
         puts e
end
$ ruby the_test.rb
undefined method `non_existent_method' for #<MyClass:0x2560c>

I don't get the rest of the backtrace (line number, etc.) unless I  
use the -d flag:

$ ruby -d the_test.rb
Exception `NoMethodError' at ./lib.rb:3 - undefined method  
`non_existent_method' for #<MyClass:0x2560c>
undefined method `non_existent_method' for #<MyClass:0x2560c>

Is there a way to get the "full" backtrace when calling "the_test.rb"  
without using the -d flag?  I hope this makes sense.

Thanks,
Ryan