class Pechkin::App
Rack application to handle requests
Constants
- DEFAULT_CONTENT_TYPE
- DEFAULT_HEADERS
Attributes
handler[RW]
logger[RW]
Public Class Methods
new(logger)
click to toggle source
# File lib/pechkin/app/app.rb, line 9 def initialize(logger) @logger = logger end
Public Instance Methods
call(env)
click to toggle source
# File lib/pechkin/app/app.rb, line 13 def call(env) req = Rack::Request.new(env) result = RequestHandler.new(handler, req, logger).handle response(200, result) rescue AppError => e proces_app_error(req, e) rescue StandardError => e process_unhandled_error(req, e) end
Private Instance Methods
proces_app_error(req, err)
click to toggle source
# File lib/pechkin/app/app.rb, line 29 def proces_app_error(req, err) data = { status: 'error', message: err.message } req.body.rewind body = req.body.read logger.error "Can't process message: #{err.message}. Body: '#{body}'" response(err.code, data) end
process_unhandled_error(req, err)
click to toggle source
# File lib/pechkin/app/app.rb, line 37 def process_unhandled_error(req, err) data = { status: 'error', message: err.message } logger.error("#{err.message}\n\t" + err.backtrace.join("\n\t")) logger.error(req.body.read) response(503, data) end
response(code, body)
click to toggle source
# File lib/pechkin/app/app.rb, line 25 def response(code, body) [code.to_s, DEFAULT_HEADERS, [body.to_json]] end