It’s so useful to automagically log caller line number and so on. Most languages make it possible via hack involving throwing an exception to yield a stack trace. Some languages explicitly provide this info. In Ruby, it’s possible with the caller array.

Here’s how I used it just now:

[ruby] def logg caller_info = caller[0].gsub! /^.+\/(.).rb:(.):in `(.*)’/, ‘\2:\3:\2’ Rails.logger.debug “[#{caller_info}] - #{id}. Thread#{Thread.current.object_id.to_s(36)}” end [/ruby]

This will output caller_info in the format: [series_feed:fetch:123]. Which is the file:method:line_number. It’s derived, via the initial regex, from the slightly less log-friendly caller string, path/to/series_feed.rb:123:in fetch’.