class RackRabbit::Middleware::ProgramName

Public Class Methods

new(app, default = "waiting for request") click to toggle source
# File lib/rack-rabbit/middleware/program_name.rb, line 5
def initialize(app, default = "waiting for request")
  @app = app
  @default = default
  set_program_name(default)
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack-rabbit/middleware/program_name.rb, line 11
def call(env)
  info = "#{env['REQUEST_METHOD']} #{env['REQUEST_PATH'] || env['PATH_INFO']}"
  set_program_name info
  status, headers, body = @app.call(env)
  set_program_name @default
  [status, headers, body]
end
sanitize(value) click to toggle source
# File lib/rack-rabbit/middleware/program_name.rb, line 23
def sanitize(value)
  if value.valid_encoding?
    value.force_encoding('utf-8')
  else
    value.chars.select(&:valid_encoding?).join.force_encoding('utf-8')
  end
end
set_program_name(name) click to toggle source
# File lib/rack-rabbit/middleware/program_name.rb, line 19
def set_program_name(name)
  $PROGRAM_NAME = sanitize($PROGRAM_NAME.split(" -- ")[0] + " -- #{name}")[0..200]
end