From b0265f58c7376c61660f2a34f73a7d8670cf6c01 Mon Sep 17 00:00:00 2001 From: Matthew Bernhardt Date: Fri, 22 Nov 2024 16:49:23 -0500 Subject: [PATCH 1/2] Add and configure Sentry gem --- Gemfile | 5 +++++ Gemfile.lock | 10 ++++++++++ README.md | 3 +++ config/initializers/sentry.rb | 9 +++++++++ 4 files changed, 27 insertions(+) create mode 100644 config/initializers/sentry.rb diff --git a/Gemfile b/Gemfile index d077ee0..fe155b9 100644 --- a/Gemfile +++ b/Gemfile @@ -69,6 +69,11 @@ gem 'rack-cors' # Use Redis adapter to run Action Cable in production # gem "redis", ">= 4.0.1" +# Sentry integration according to their documentation [https://docs.sentry.io/platforms/ruby/guides/rails/] +gem "stackprof" +gem "sentry-ruby" +gem "sentry-rails" + gem 'stringex' # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] diff --git a/Gemfile.lock b/Gemfile.lock index 411289c..86506f4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -401,6 +401,12 @@ GEM rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) + sentry-rails (5.21.0) + railties (>= 5.0) + sentry-ruby (~> 5.21.0) + sentry-ruby (5.21.0) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) @@ -418,6 +424,7 @@ GEM sqlite3 (1.7.3-arm64-darwin) sqlite3 (1.7.3-x86_64-darwin) sqlite3 (1.7.3-x86_64-linux) + stackprof (0.2.26) statsd-ruby (1.5.0) stimulus-rails (1.3.4) railties (>= 6.0.0) @@ -507,10 +514,13 @@ DEPENDENCIES rubocop-rails scout_apm selenium-webdriver + sentry-rails + sentry-ruby simplecov simplecov-lcov sprockets-rails sqlite3 + stackprof stimulus-rails stringex turbo-rails diff --git a/README.md b/README.md index 1a4cc6f..fc4f5f8 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,9 @@ Lots more [Scout settings](https://scoutapm.com/docs/ruby/configuration#environm `SCOUT_LOG_LEVEL`: defaults to INFO which is probably fine. Controls verboseness of Scout logs `SCOUT_NAME`: set a unique name per deployed tier to avoid confusion. +`SENTRY_DSN`: The Sentry-provided key to enable exception logging. Sentry integration is skipped if not present. +`SENTRY_ENV`: Sentry environment for the application. Defaults to 'unknown' if unset. + ### Authentication #### Required in all environments diff --git a/config/initializers/sentry.rb b/config/initializers/sentry.rb new file mode 100644 index 0000000..c2249cc --- /dev/null +++ b/config/initializers/sentry.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +Sentry.init do |config| + return unless ENV.has_key?('SENTRY_DSN') + config.dsn = ENV.fetch('SENTRY_DSN') + config.breadcrumbs_logger = [:active_support_logger, :http_logger] + config.enable_tracing = true + config.environment = ENV.fetch('SENTRY_ENV', 'unknown') +end From fdd34d5fd43fe8013ec8f736ee64d6fe1fe51a76 Mon Sep 17 00:00:00 2001 From: Matthew Bernhardt Date: Mon, 25 Nov 2024 12:00:47 -0500 Subject: [PATCH 2/2] Remove tracing / profiling per code review --- Gemfile | 1 - Gemfile.lock | 2 -- config/initializers/sentry.rb | 1 - 3 files changed, 4 deletions(-) diff --git a/Gemfile b/Gemfile index fe155b9..5296365 100644 --- a/Gemfile +++ b/Gemfile @@ -70,7 +70,6 @@ gem 'rack-cors' # gem "redis", ">= 4.0.1" # Sentry integration according to their documentation [https://docs.sentry.io/platforms/ruby/guides/rails/] -gem "stackprof" gem "sentry-ruby" gem "sentry-rails" diff --git a/Gemfile.lock b/Gemfile.lock index 86506f4..0c3a1bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -424,7 +424,6 @@ GEM sqlite3 (1.7.3-arm64-darwin) sqlite3 (1.7.3-x86_64-darwin) sqlite3 (1.7.3-x86_64-linux) - stackprof (0.2.26) statsd-ruby (1.5.0) stimulus-rails (1.3.4) railties (>= 6.0.0) @@ -520,7 +519,6 @@ DEPENDENCIES simplecov-lcov sprockets-rails sqlite3 - stackprof stimulus-rails stringex turbo-rails diff --git a/config/initializers/sentry.rb b/config/initializers/sentry.rb index c2249cc..91ce9ca 100644 --- a/config/initializers/sentry.rb +++ b/config/initializers/sentry.rb @@ -4,6 +4,5 @@ return unless ENV.has_key?('SENTRY_DSN') config.dsn = ENV.fetch('SENTRY_DSN') config.breadcrumbs_logger = [:active_support_logger, :http_logger] - config.enable_tracing = true config.environment = ENV.fetch('SENTRY_ENV', 'unknown') end