#25 ✓resolved
Brian Candler

[PATCH] eval hides exception source in helpers

Reported by Brian Candler | April 3rd, 2008 @ 11:05 AM

The use of 'eval' hides the true location of exceptions in helpers. For example, just try

telnet localhost 1337
GET /collab HTTP/1.1
<<blank line>>

The error given is:

[2008-04-03 15:58:49] ERROR TypeError: can't convert nil into String
        (eval):442:in `+'
        (eval):442:in `do_GET'

which doesn't identify which file the error occured in.

After the following patch is applied:

--- /usr/lib/ruby/gems/1.8/gems/adhearsion-0.7.7/ahn.orig       2008-04-03 14:21:39.000000000 +0100
+++ /usr/lib/ruby/gems/1.8/gems/adhearsion-0.7.7/ahn    2008-04-03 15:59:33.000000000 +0100
@@ -207,7 +207,7 @@
         if config.delete('enabled') != false
          log "Parsing helper #{name}"
           $HELPERS[name] = config
-          eval File.read(f)
+          load f
         end
       end
     end

then the exception becomes clearer:

[2008-04-03 16:00:18] ERROR TypeError: can't convert nil into String
        ./helpers/micromenus.rb:442:in `+'
        ./helpers/micromenus.rb:442:in `do_GET'

(Maybe there is some reason why eval File.read(f) is used instead of load(f), but I can't think of one)

Comments and changes to this ticket

  • Jay Phillips

    Jay Phillips April 3rd, 2008 @ 06:23 PM

    • State changed from “new” to “resolved”

    Hi bcandler,

    (I posted this on your other patch too. Including it here too for the archive.)

    Thanks a TON for the patch! I always love it when I see people get involved in the software development process. :)

    Though there won't be another release of 0.7.x, I will definitely use these patches in the refactored version of Micromenus that will be included in 0.8.x.

    Thanks!

    Jay Phillips

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Shared Ticket Bins

People watching this ticket

Tags

Pages