class LogSpy::Spy
Attributes
sqs_thread[R]
Public Class Methods
new(app, sqs_url, options = {})
click to toggle source
# File lib/log_spy/spy.rb, line 9 def initialize(app, sqs_url, options = {}) @app = app @sqs_url = sqs_url @options = options end
Public Instance Methods
call(env)
click to toggle source
# File lib/log_spy/spy.rb, line 15 def call env @env = env @start_time = Time.now.to_f @status, header, body = @app.call(env) @sqs_thread = send_sqs_async [ @status, header, body ] rescue Exception => err @sqs_thread = send_sqs_async(err) raise err end
Private Instance Methods
req()
click to toggle source
# File lib/log_spy/spy.rb, line 28 def req Rack::Request.new @env end
send_sqs_async(err = nil)
click to toggle source
# File lib/log_spy/spy.rb, line 33 def send_sqs_async(err = nil) @sqs_thread = Thread.new do status = err ? 500 : @status sqs_client = Aws::SQS::Client.new(@options) duration = ( (Time.now.to_f - @start_time) * 1000 ).round(0) res = OpenStruct.new({ :duration => duration, :status => status }) payload = ::LogSpy::Payload.new(req, res, @start_time.to_i, err) sqs_client.send_message({ queue_url: @sqs_url, message_body: payload.to_json }) end end