class Middleware::Logger

Public Class Methods

new(app, logger, name = nil) click to toggle source
# File lib/middleware/logger.rb, line 7
def initialize app, logger, name = nil
  @app = app
  @write_to = logger
  @middleware_name = name
end

Public Instance Methods

call(env) click to toggle source
# File lib/middleware/logger.rb, line 13
def call env
  write(
      way_in_message(
          next_middleware_name, env
  ))

  time = Time.now

  @app.call(env).tap { |env|
    write(
        way_out_message(
            next_middleware_name, (Time.now - time) * 1000.0, env
    ))
  }
end
next_middleware_name() click to toggle source
# File lib/middleware/logger.rb, line 29
def next_middleware_name
  @app.class.name
end
pretty_print(item) click to toggle source
# File lib/middleware/logger.rb, line 33
def pretty_print item
  ->(out){ PP.pp(item, out) }.('')
end
way_in_message(name, env) click to toggle source
# File lib/middleware/logger.rb, line 37
def way_in_message name, env
  ' %s has been called with: %s' % [name, pretty_print(env)]
end
way_out_message(name, time, value) click to toggle source
# File lib/middleware/logger.rb, line 41
def way_out_message name, time, value
  ' %s finished in %.0f ms and returned: %s' % [name, time, pretty_print(value)]
end
write(msg) click to toggle source
# File lib/middleware/logger.rb, line 45
def write msg
  @write_to.add(::Logger::INFO, msg.slice(0, 255).strip!, @middleware_name)
end