0
def self.init(options = {})
0
@logger = options[:default_logger]
0
+ # Add the LogBuddy::Mixin to Object instance and class level.
0
def self.mixin_to_object
0
include LogBuddy::Mixin
0
+ # The main Mixin that gets added on the #init call
0
+ # This is where the magic happens. This method can take a plain old string, and it will log
0
+ # it like any call to Logger#debug. To get the name of the thing you are logging and its value,
0
+ # Seperate with semicolons for multiple things - pretty much any valid ruby will work.
0
+ # d { @@foo; MY_CONST }
0
+ # d { @person; @@place; object.method() }
0
+ def d(msg = nil, &blk)
0
+ LogBuddy.debug(msg) if msg
0
+ return unless block_given?
0
+ logged_line = LogBuddy.read_line(caller[0])
0
+ arguments = LogBuddy.parse_args(logged_line)
0
+ arguments.each do |arg|
0
+ result = eval(arg, blk.binding)
0
+ LogBuddy.debug(%[#{arg} = '#{result}'\n])
0
+ # Add a default logger to everything, everywhere.
0
+ LogBuddy.default_logger
0
+ # Default logger LogBuddy will use
0
def self.default_logger
0
return @logger if @logger
0
@logger = init_default_logger
0
+ # Attempt to establish a default logger - first try RAILS_DEFAULT_LOGGER,
0
+ # then fallback to default.
0
def self.init_default_logger
0
if Object.const_defined?("RAILS_DEFAULT_LOGGER")
0
@logger = Object.const_get("RAILS_DEFAULT_LOGGER")
0
@logger = Logger.new(STDOUT)
0
default_logger.debug(str)
0
+ # Returns array of arguments in the block
0
+ # You must ues the brace form (ie d { "hi" }) and not do...end
0
def self.parse_args(logged_line)
0
- block_args = logged_line[/\{(.*)\}/, 1].strip
0
+ block_contents = logged_line[/\{(.*)\}/, 1]
0
+ args = block_contents.split(";").map {|arg| arg.strip }
0
+ # Return the calling line
0
def self.read_line(frame)
0
file, line_number = frame.split(/:/, 2)
0
line_number = line_number.to_i
0
lines = File.readlines(file)
0
- def d(msg = nil, &blk)
0
- LogBuddy.debug(msg) if msg
0
- return unless block_given?
0
- logged_line = LogBuddy.read_line(caller[0])
0
- arguments = LogBuddy.parse_args(logged_line)
0
- result = eval(arguments, blk.binding)
0
- LogBuddy.debug(%[#{arguments} = '#{result}'\n])
0
- LogBuddy.default_logger
Comments
No one has commented yet.