Merge branch 'sentry' into 'master'

Christopher Vollick created

Instrument for sentry

See merge request soprani.ca/sgx-bwmsgsv2!9

Change summary

Gemfile         | 1 +
sgx-bwmsgsv2.rb | 8 ++++++++
2 files changed, 9 insertions(+)

Detailed changes

Gemfile 🔗

@@ -13,6 +13,7 @@ gem 'lazy_object'
 gem 'log4r'
 gem 'rack', '< 2'
 gem 'redis'
+gem "sentry-ruby", "<= 4.3.1"
 
 group :development do
 	gem 'rubocop', require: false

sgx-bwmsgsv2.rb 🔗

@@ -24,6 +24,7 @@ require 'em-hiredis'
 require 'em-http-request'
 require 'json'
 require 'securerandom'
+require "sentry-ruby"
 require 'time'
 require 'uri'
 require 'webrick'
@@ -36,7 +37,10 @@ require 'em_promise'
 
 require_relative 'lib/registration_repo'
 
+Sentry.init
+
 def panic(e)
+	Sentry.capture_exception(e)
 	puts "Shutting down gateway due to exception: #{e.message}"
 	puts e.backtrace
 	SGXbwmsgsv2.shutdown
@@ -44,6 +48,8 @@ def panic(e)
 	EM.stop
 end
 
+EM.error_handler(&method(:panic))
+
 def extract_shortcode(dest)
 	num, context = dest.split(';', 2)
 	num if context == 'phone-context=ca-us.phone-context.soprani.ca'
@@ -743,6 +749,7 @@ class ReceiptMessage < Blather::Stanza
 end
 
 class WebhookHandler < Goliath::API
+	use Sentry::Rack::CaptureExceptions
 	use Goliath::Rack::Params
 
 	def response(env)
@@ -986,6 +993,7 @@ class WebhookHandler < Goliath::API
 
 		[200, {}, "OK"]
 	rescue Exception => e
+		Sentry.capture_exception(e)
 		puts 'Shutting down gateway due to exception 013: ' + e.message
 		SGXbwmsgsv2.shutdown
 		puts 'Gateway has terminated.'