class Logger
define_method(:info) do |hash|
return if hash.is_a? String
@@session = -> { "n/a" } unless defined? @@session
p @@session.()
p hash
end
def self.session(fn)
@@session = fn
end
end
logger = Logger.new
logger.info "hello"
# At some point AFTER the logger instance has already been created
Logger.session -> { "beep" }
logger.info :foo => :bar, :baz => 123