2009-05-14 04:56:07 -04:00
|
|
|
require 'active_support/core_ext/class/attribute_accessors'
|
|
|
|
|
2009-02-27 14:42:13 -05:00
|
|
|
module AbstractController
|
|
|
|
module Logger
|
2009-05-07 11:29:22 -04:00
|
|
|
extend ActiveSupport::DependencyModule
|
|
|
|
|
2009-05-14 20:25:10 -04:00
|
|
|
class DelayedLog
|
|
|
|
def initialize(&blk)
|
|
|
|
@blk = blk
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
@blk.call
|
|
|
|
end
|
|
|
|
alias to_str to_s
|
|
|
|
end
|
|
|
|
|
2009-05-07 11:38:57 -04:00
|
|
|
included do
|
2009-04-07 17:57:18 -04:00
|
|
|
cattr_accessor :logger
|
2009-02-27 14:42:13 -05:00
|
|
|
end
|
2009-05-14 20:25:10 -04:00
|
|
|
|
|
|
|
def process(action)
|
|
|
|
ret = super
|
|
|
|
|
|
|
|
if logger
|
|
|
|
log = DelayedLog.new do
|
|
|
|
"\n\nProcessing #{self.class.name}\##{action_name} " \
|
|
|
|
"to #{request.formats} " \
|
|
|
|
"(for #{request_origin}) [#{request.method.to_s.upcase}]"
|
|
|
|
end
|
|
|
|
|
|
|
|
logger.info(log)
|
|
|
|
end
|
|
|
|
|
|
|
|
ret
|
|
|
|
end
|
|
|
|
|
|
|
|
def request_origin
|
|
|
|
# this *needs* to be cached!
|
|
|
|
# otherwise you'd get different results if calling it more than once
|
|
|
|
@request_origin ||= "#{request.remote_ip} at #{Time.now.to_s(:db)}"
|
|
|
|
end
|
2009-02-27 14:42:13 -05:00
|
|
|
end
|
2009-05-14 04:56:07 -04:00
|
|
|
end
|