class ErrorMessageTracker
Public Class Methods
new(app)
click to toggle source
# File lib/error-message-tracker.rb, line 7 def initialize(app) @app = app end
setup(appName, token)
click to toggle source
# File lib/error-message-tracker.rb, line 2 def self.setup(appName, token) ErrorMessageTracker.const_set("APP_NAME", appName) ErrorMessageTracker.const_set("TOKEN", token) klass = Class.new do def initialize(app) @app = app end def call(env) begin @app.call(env) rescue Exception => ex bc = ActiveSupport::BacktraceCleaner.new bc.add_filter { |line| line.gsub(Rails.root.to_s, '') } # strip the Rails.root prefix bc.add_silencer { |line| line =~ /rbenv|error-message-tracker/ } # skip any lines from mongrel or rubygems # perform the cleanup files = {} bc.clean(ex.backtrace).each do | line | file_name = Rails.root.join(line.split(":")[0].gsub(/\A\//, '')) file = File.open(file_name.to_s) files[line.split(":")[0]] = file.read file.close end HTTParty.post("https://error-message-tracker.herokuapp.com/mistakes", {body: { mistake: { token: TOKEN, app_name: APP_NAME, title: ex.message, stack_trace: bc.clean(ex.backtrace).to_json, file_data: files.to_json } }} ) raise ex end end end ErrorMessageTracker.const_set("Application", klass) end
Public Instance Methods
call(env)
click to toggle source
# File lib/error-message-tracker.rb, line 11 def call(env) begin @app.call(env) rescue Exception => ex bc = ActiveSupport::BacktraceCleaner.new bc.add_filter { |line| line.gsub(Rails.root.to_s, '') } # strip the Rails.root prefix bc.add_silencer { |line| line =~ /rbenv|error-message-tracker/ } # skip any lines from mongrel or rubygems # perform the cleanup files = {} bc.clean(ex.backtrace).each do | line | file_name = Rails.root.join(line.split(":")[0].gsub(/\A\//, '')) file = File.open(file_name.to_s) files[line.split(":")[0]] = file.read file.close end HTTParty.post("https://error-message-tracker.herokuapp.com/mistakes", {body: { mistake: { token: TOKEN, app_name: APP_NAME, title: ex.message, stack_trace: bc.clean(ex.backtrace).to_json, file_data: files.to_json } }} ) raise ex end end