We’ve been often annoyed by warnings or exceptions like this:
error or warning.
They make it very difficult to pinpoint the exact location of the problem.
The problem is usually cause by
module_eval being called without file and line information.
There’s an interesting write-up about eval and position information on
Ola Bini’s blog.
One of his readers observed that when using
module_eval like this you’ll get the incorrect
However, I noticed that if you write the heredoc inline you’ll get the correct
line in the backtrace:
__LINE__ + 1 accounts for the line with the module_eval itself. I tested
this with Ruby 1.8.6 and Ruby 1.9.1 and it applies for both, tough 1.9 at least
puts more lines in the backtrace with the position of the
__LINE__ is better than skipping them, but can lead to false line numbers
unless you use the 2nd form with the inlined heredoc.