Can I get eval to be more specific when errors occur?

neelix hgs 86 %> cat raise_test
#!/usr/local/bin/ruby -w

# test of raising to get a better traceback

class Raisable < RuntimeError
    def initialize(astring)
        super
    end
end

class Raise_test
    def first_raise
        raise Raisable.new("Raise error in first_raise")
    end

    def second_raise
        begin
            first_raise
        # rescue
            # raise
        end
    end
    def initialize()
        second_raise
    end
end

raiser = Raise_test.new


neelix hgs 87 %> cat raise_test.patch
--- raise_test  Thu Aug 10 12:52:16 2000
+++ raise_test.new      Thu Aug 10 12:53:31 2000
@@ -2,6 +2,8 @@
 
 # test of raising to get a better traceback
 
+text = <<END
+
 class Raisable < RuntimeError
     def initialize(astring)
         super
@@ -27,4 +29,7 @@
 
 raiser = Raise_test.new
 
+END
+a_binding = binding
+eval(text, a_binding)
 
neelix hgs 88 %> raise_test
raise_test:13:in `first_raise': Raise error in first_raise (Raisable)
        from raise_test:18:in `second_raise'
        from raise_test:24:in `initialize'
        from raise_test:28:in `new'
        from raise_test:28
neelix hgs 89 %> raise_test.new
raise_test.new:34:in `eval': (eval):10:in `first_raise': Raise error in
first_raise (Raisable)
        from raise_test.new:34
neelix hgs 90 %> 

The first is far more useful.  This is with Ruby 1.4.4.  I tried the
rescue clause enabled and commented out to see if this made any differnce
to the diagnostics but it does not, even under eval:

neelix hgs 94 %> ./raise_test.new2
./raise_test.new2:34:in `eval': (eval):10:in `first_raise': Raise error in
first_raise (Raisable)
        from ./raise_test.new2:34
neelix hgs 95 %> /usr/local/bin/diff -u raise_test.new raise_test.new2
--- raise_test.new      Thu Aug 10 12:53:31 2000
+++ raise_test.new2     Thu Aug 10 13:04:59 2000
@@ -18,8 +18,8 @@
     def second_raise
         begin
             first_raise
-        # rescue
-            # raise
+        rescue
+            raise
         end
     end
     def initialize()
neelix hgs 96 %> 

So I don't know how to improve the traceback information.
	Hugh
	hgs / dmu.ac.uk