class Logput::Middleware

Middleware

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/logput/middleware.rb, line 5
def initialize(app, options = {})
  @app = app
  @path_to_log_file = options[:path_to_log_file]
  @lines_to_read = options[:lines_to_read] || 500
end

Public Instance Methods

call(env) click to toggle source

Call

# File lib/logput/middleware.rb, line 12
def call(env)
  @env = env
  @path_to_log_file ||= default_path_to_log_file

  ensure_log_file_exists!

  if is_logput?
    generate_output!
  else
    @app.call(@env)
  end
end

Private Instance Methods

default_path_to_log_file() click to toggle source
# File lib/logput/middleware.rb, line 40
def default_path_to_log_file
  raise Exception, 'Must specify path to Rails log file' unless defined? Rails
  path
end
ensure_log_file_exists!() click to toggle source
# File lib/logput/middleware.rb, line 27
def ensure_log_file_exists!
  raise 'Log file does not exist' unless File.exist? @path_to_log_file
end
generate_output!() click to toggle source
# File lib/logput/middleware.rb, line 35
def generate_output!
  out = `tail -n #{@lines_to_read} #{@path_to_log_file}`
  [200, {"Content-Type" => "text/html"}, ["<pre>", out, "</pre>"]]
end
is_logput?() click to toggle source
# File lib/logput/middleware.rb, line 31
def is_logput?
  @env['PATH_INFO'] == '/logput'
end
logger() click to toggle source
# File lib/logput/middleware.rb, line 45
def logger
  @env['action_dispatch.logger']
end
logger_adapter() click to toggle source
# File lib/logput/middleware.rb, line 53
def logger_adapter
  @logger_adapter ||= Logput::Adapters.obtain(logger)
end
path() click to toggle source
# File lib/logput/middleware.rb, line 49
def path
  logger_adapter.path
end