From 545e59e2179355cfd39caa096311040f9fedf9d6 Mon Sep 17 00:00:00 2001 From: Leonard Ng'eno Date: Fri, 8 Aug 2025 14:49:17 -0400 Subject: [PATCH 1/2] swap solid_errors for sentry --- Gemfile | 4 ++- Gemfile.lock | 15 +++++----- app/views/layouts/application.html.erb | 1 + config/credentials.yml.enc | 2 +- config/credentials/production.yml.enc | 2 +- config/database.yml | 12 -------- config/environments/development.rb | 1 - config/environments/production.rb | 8 ------ config/environments/test.rb | 1 - config/initializers/sentry.rb | 10 +++++++ config/routes.rb | 1 - db/errors_schema.rb | 40 -------------------------- 12 files changed, 24 insertions(+), 73 deletions(-) create mode 100644 config/initializers/sentry.rb delete mode 100644 db/errors_schema.rb diff --git a/Gemfile b/Gemfile index 8596a70..106a68b 100644 --- a/Gemfile +++ b/Gemfile @@ -86,4 +86,6 @@ gem "kaminari", "~> 1.2" gem "discard", "~> 1.4" -gem "solid_errors", "~> 0.7.0" +gem "sentry-ruby", "~> 5.26" + +gem "sentry-rails", "~> 5.26" diff --git a/Gemfile.lock b/Gemfile.lock index 4c6575e..4a520fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -401,6 +401,12 @@ GEM websocket (~> 1.0) sendgrid-ruby (6.7.0) ruby_http_client (~> 3.4) + sentry-rails (5.26.0) + railties (>= 5.0) + sentry-ruby (~> 5.26.0) + sentry-ruby (5.26.0) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) solid_cable (3.0.11) actioncable (>= 7.2) activejob (>= 7.2) @@ -410,12 +416,6 @@ GEM activejob (>= 7.2) activerecord (>= 7.2) railties (>= 7.2) - solid_errors (0.7.0) - actionpack (>= 7.0) - actionview (>= 7.0) - activerecord (>= 7.0) - activesupport (>= 7.0) - railties (>= 7.0) solid_queue (1.2.1) activejob (>= 7.1) activerecord (>= 7.1) @@ -508,9 +508,10 @@ DEPENDENCIES rubocop-rails-omakase selenium-webdriver sendgrid-ruby (~> 6.7.0) + sentry-rails (~> 5.26) + sentry-ruby (~> 5.26) solid_cable solid_cache - solid_errors (~> 0.7.0) solid_queue stimulus-rails thruster diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index b25560f..a300d1b 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -20,6 +20,7 @@ <%= favicon_link_tag asset_path("favicon.ico") %> <%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.2/css/all.min.css", rel: "stylesheet", crossorigin: "anonymous" %> <%= stylesheet_link_tag "https://unpkg.com/slim-select@latest/dist/slimselect.css", rel: "stylesheet", crossorigin: "anonymous" %> + <%= Sentry.get_trace_propagation_meta.html_safe %> diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc index 81444e1..104ad56 100644 --- a/config/credentials.yml.enc +++ b/config/credentials.yml.enc @@ -1 +1 @@ -QiGXfcdTqkYLOCsiZbNzsGhGRxJKMF1tTqF0thDLLPQ9I2kBCZ8K3+pSyYe5WP018DUhdKWwrdpF4cu0Xmk5bjXhWb8HzNYgYdBdQWoGFGkkPdU4APY4zgzQr2H8DF0R/hNe0/0xxlysMDo9oCB7NWetwjR4cwoNI8827xEaYOzRVq2NlwZa5rPSuX1D20JcJaHDq/y51T01EBpx8wWfzacvpYrDp93Ne5czCJxqz58PdTCezN2Vk2NQ/nwM4pBwB0Jg+etHq/oqHibCIVu8302t2fEv5WKoJWRtdDCBwzajuchrZ+E1w9pq+PhcVODhOSpzTLN0ZoFUQj46jpfOThc//J0Q1XfRif7rHDYNJXhS1bc8QiyEtl3va8cH2Qif0WXusDkiBI6jcUDzJf3Cn1xNF60igYus+VEicQOCxkQJsGkjD30J6C33q5CW33WUQz3LMqPv8woaLlTOat9PxMGGXR05+iTnIgihvCWHpnob64GExJyV+Ssj7Ow7btZfIynJWYlNJL2uJjPM7t0SX4Jzmsu4wYxVlIZeO4s9CpB/Dmw25y9GOUSKpr7F73WNL9aW0yU0uQDIgn4SbbunkF3e8zmYtXQmCHeGlIp6WIyT7rWZJptYv0q6M0TARiO/IxJipVRld+qGgV7qImJ46EDLu5ZeewLouYN+3ZoaAE5DjytPr2qV01m/NGfhYjVZaEWz2RzRVVnPNPGKvcAl+IV5Cuqm0qxW7jWO65YVJhEBUtVacI71Ol+qV0JMMaXNz+3An43bn3oDhVulf5IQ6XpZLg/prO9rw078c79wuwClI/n9XtY+0yrDcRhlTLREmUpBusrWz49t4zZKdX5YXxBZ17gUOppC3HgmY86kyQezp9i9V0FHWRxa/rehPH4OQbWiU+UeAn6Dix+mYYzI/CtNXq3xrl+ARFJa8fZNl1YaQJhvcX05bgpeK36x12HeDwn5W09gEOPCzvar8dDD0IH8+OyK/SlaRDlHKfnTtsH6O9v7E6B965KoieulRBl7CFGmFTs1+Con3bpiwDsJ+Sn0vRhVA0yjCZRVqewa--Q0SLn+YIxZMBxMT6--ljuDOcGgX5dybpYQRsCIBg== \ No newline at end of file +Ov+eS2PGfqX9j10V9D5nX/XQCR4POuQVIj3vsUGriU37DdnXTV+5xIJ0IAJPz7eBHjZC5lM1O3jRIh2F/QK8XE8hnjNgxtGqr0kcZJiYCR6cN6WSJFrjl3di6oI/oVE2vQBeZuDwkvDKQ5Jl8ulZ+lLRj5o8QQbTA3H0I7SWVJ8+1bkIvl3Y7GCJNCGl6Cbs9iGAgsWBe2XQ7Darhss7Lx/iiNXjq0JUwVFRmZ3F8ICmlrIBb9+DxAc39Il6wlztO3tNqGLtreL+cOv5/24pro00A1JPZwFBczE7cdebUlTyKK++cNCP98yCzFZbFSBasrHBcLevmk1rtyBlmbWMsMk59Jr19NTNywGksDabgkPEPKnqQAth7fy/qrx1qEKvcRJLX5wbpXw4CvtRaybQL1bJ+QxHOLYYgB5CNWS2i5RUkhJRkHG+VNzBHfhxl8YRXIrwZIgIyZO60F/YadXBwXpPVMhSQ1kCG3wTAYH1qIz0GcWhEiI3xbG2RcXjrFWa/rk9DQ3SiYT9fyQhHvvinXosKx+11LJ/E84bkIzrkfivdKEgs+PLF5i4ouu8dDWEGlZBwD7GHlOjFeoL0q1m3LZea74rDaGMV2Cwh/fV9gZxgHpRKe09/+CLxB73YMo3IFjD0Vr4L/mLBaJKy4grPLxF8lhQjajGrwTdQfNQWLm+fej7P1DsD2d1ogsaexQU/Qb4Rq7CeKxqF4bpANhdOGZUvmhwepKWA22idWBfeLa1tgs0/FM3hhrTtCgcD+4D5IQFbAICWFV7iVJC9LauTrdLHCLvnB60wujzauqqsh2Sk7y0IfZDmiBkZSMrfpeEtJ3jXDki1sSyJFGg5hmd+6orK8f7Uf6pVzXer1J1M0i6EUXnqY1FM50yleEmi5G2DcpsfZM4kVfiBgUmR8yyHr8/Lk12hN1tYJLL6WXn/T7UDWzY195w3zY556IEoKjBCKHC3gVl8wnypcNbUBfNHvEEcuxiqHRJfX+VqcoE7125a6wYyGEr5IefrA9PDwfFb2VwCRSrfD/6pjI7vGjeHOQ10MufPX+fxFnBo98qwIsiHMuvGUi8HtQxT4sa8vRwZ+/kL36tHezQmZdzjC5FFNEHbec8XMnD46ZRVWFPsX68Hhte9oWeZPi4rI0+SADF8ZzL4NqYrwnUxZ7hWO3S7/OxWJT7HR5MP6E0lve/jpaXCrzPyw==--jFPZeqpPnkcOZ5hw--dYOphXZBZmvpniKnvvVPkQ== \ No newline at end of file diff --git a/config/credentials/production.yml.enc b/config/credentials/production.yml.enc index 98a128f..bdfea5c 100644 --- a/config/credentials/production.yml.enc +++ b/config/credentials/production.yml.enc @@ -1 +1 @@ -gfYzcO3Z3rNAbZo1GCoMzJ3PknAHXUlSx2CvBxZW8yOm6P3xxnKH1YG5OdWo3wJdfnHgfiSu+hg/ZK3s1c4y0uokluJsIj2eqSZrIq5jjnnmur9rOAM1u0ZPNWR4Zkm8iIrT3xijYuvWZysg4z7sN4OjyK1080yPYlmvn/5fA5/tnjMD0M9zdk9rNoBkX+1v5sXDPR9llnVFq30cy5WG1kN0Lg1wy3Ca7J8cOzA8f7lLA2SBXlRnf1xthzLdjSChE25VTuhg9t18UGXhmnYZupa1L178/8ouIg0+5/F4aC6lZl7VAAkmQ9QzQc7wSBfxtE8D0xr5848PixAse4AdIIYeEBhdTfX51B/ddRObe1r+rNoEkPHiJ7+PCBEz4Q9auInmyAqefpSx1OUYTOJFEh8c5TD8AO69nhUMB2GNKeFq3Ch3elNd92CvMMx+AW9dMWO2/YM5fzQIYlEn8xueBz7cVm7JF+TypjiHLXy9kWzNSQjJBXZf8xqVL/7GQU9hhZ2BC1Gw0Ef7O3k0hMSCxrf6LrJzFbCCv54jv5Qy30BZLKD42YjNypkFSStAjQ9KN/jci3nVABLTLiPWDXpA3AleA0ps4K9+mA6+QCke1BqB5IzM5zMK5x4v2P46ZF6uaCMZujaBR7F05izS0kcpnL2oBjLta3a35joUkwYQO8vZedG9ZKUSkntD5n/aM8wQvTDCck8lDhg8Qy1/5F1ZOKUZVkJUWgWzMBc7NeFBvnD7xTd4taul0zElPIdVuDozOIGHzaemnVSLgjOIKbhbauw1tEJ3bnDNRxqZcp6WDdNH/3A2hDcX/NXpn1H7QLSBJjF58aDZj4n2euYvIlSpua0jXU9wQ7pIH0ZoXA4ty1BdoyNA1JHxQ/ilweNuBz2XQZjOZ7u/1HDfeX91Z0Qq+iO0iKK5rq7k9TrC2JsXCAHJkmftBI9esM1VneZwKmUKma3FjU8foR6hNSfOJRvWVFyakCesGQUU+RQ9wntW0CslIT7mu7Vlx+Vn3QWtcqm9o4uKoaTQ5KNg65DbNtV4m/rhEDIXvwpofyE0/p+vhpF0/C6QOuJ2IvqfSrgQ0mAJ/gIZeYkgkqpp9q+Uu6U55wevaBOVFmBpG+fMWnKyHqI9Rb3kYDwnzpZTHFwyy4ZPL55dZrmzPY3RgREloQ5P9bhGhkUw3s4s0rooS8VqzBqVJ0ofPhBwRqktKJor2plbLn5t5DvQrpPgMq7rXPE28x4mpCY0xZ/9Y1dmSa9CF7UAree5sG/7cITskSqJl95AyQLxSiXBHx0yrLWO+v0g5v4tYR67GrHKNLsCbLeU1xN+Jv4CFl5pPNCfnomZamYndg==--9KnOlEWOdrdGImvS--E/dqH3O2FzTJsJCbpVZTIQ== \ No newline at end of file +Ebflq+K0+NxsC6/SmzHnulXa/rPsP49Jh7uo35WbwAvhDhNSDvuXWFFXvkfJbYRg6d++IfH6bFGOqL8n5p0pj8bNgct2xWmkX9b5sHkG7ug/hfIF802q4Q8UhNh3ubbg3Tb3sZxcOxEGCce8hqUbYrOMSaL50xj5i4OkQaDhsdRu/qgd1bgXb/EnMuILuuhVa1HFrhdxBJgU4v9El6IV6WV7L7s9eW9TyK+do+Sn51g16RhJjKMaBPXglbweWawY1qwkkq34GslCNlYSkDvYIxTCXgN+Oe3C2IPh9Izp+s0csExmYjuUhMJ3TEmIeow8I4yfrb1PO3rxqnCYwpPEDOBfqWc4AO+xZlS478xuOMQih0RY/uUmyb/tz+jWysjnJWmCzCWCARanEsATlEHGjljC7RbaHQmPMzpCil40h/2694RQBdPPLvMLhYo+tor1oiXbpPSlcR2KRiaaQUwZgEApEUCtQJBegZD6AWQOVs3tImp6CBGe4CcLRrOha7FyjAb5YTQAJbDiEjA1k6VPbIpXZuUH8pVR25q3WmetQoFCEeQCcda3AT3sFW5pyOX92BWsleHzHjLvIeznmMQSt6VLuIf7iF8Ce89BeTi3N9SMyLqE4rvb2Gx4mOb/Fyk8fatdKbRjuqgXOkmlfF0ol3mWe3lP/ygIQ5gkmQiCHKQGGtEy6hQ1gtX5GuKXDsZZxvaLNuAV/pCk4ebXwFPIMDghzbuaogt3R4Do9o0zLrGZ4NqIGwrqLErp55GJx9kOmJJ6d0RYWdOD6NF7UNWKyKScx0hVjPa2QVBir4iTZliYat86cDSaadIUBIDjsJubUKlZLeRkFuRGPO1MddnQJe3v3u5JplYn5+t5bpXzr9zretF4+3qDUtJLXBihCtU4wJfnR1V0nexhaE1/0A9r5IhVQp5FLaQSF4Zy71CLkQrbvNHvqVTAJKMAriC8rvCwpWInU9n5R1lZnezGWoz+1BfSxdvdqu1YzhzRIZLumPvFNdbzmDdgXvUOupDFobPpXJ2U2hFRWOYdsgdAhkTLiEbWJmLQ3iEkf/mPvV6UKB4c5Mvzngyr7JUmSW9L/r273Mu37ndfMG3MHxaiP2BqRdZUhCtIQVY2XZVGkYlQBbkwRJYaLoWflOn/Axp2wuSM73wT9d3n336xZdByIGuuNQunVop4Lo/VGoFCHiKq4LjQK16IXUJbZT17sPzJsiqsevdylYmPqkjQTmaGlTIEUT4PPMZwFMaFR3AzeVJ2rj/Jq45adA1gZqtz--MpRskJ737R7UR++H--0dh+or7qckdhsHl6K+Zqvg== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml index c5d9116..0b42699 100644 --- a/config/database.yml +++ b/config/database.yml @@ -33,10 +33,6 @@ development: <<: *primary_development database: engage_development_queue migrations_paths: db/queue_migrate - # errors: - # <<: *primary_development - # database: engage_development_errors - # migrations_paths: db/errors_migrate # The specified database role being used to connect to PostgreSQL. # To create additional roles in PostgreSQL see `$ createuser --help`. # When left blank, PostgreSQL will use the default role. This is @@ -71,10 +67,6 @@ test: primary: &primary_test <<: *default database: engage_test - # errors: - # <<: *primary_test - # database: engage_test_errors - # migrations_paths: db/errors_migrate # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. @@ -114,7 +106,3 @@ production: <<: *primary_production database: engage_production_cable migrations_paths: db/cable_migrate - errors: - <<: *primary_production - database: engage_production_errors - migrations_paths: db/errors_migrate diff --git a/config/environments/development.rb b/config/environments/development.rb index 3a3e050..b5c1171 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -89,5 +89,4 @@ # Replace the default in-process and non-durable queuing backend for Active Job. config.active_job.queue_adapter = :solid_queue config.solid_queue.connects_to = { database: { writing: :queue } } - # config.solid_errors.connects_to = { database: { writing: :errors } } end diff --git a/config/environments/production.rb b/config/environments/production.rb index 3b300c4..114cdce 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -90,12 +90,4 @@ # # Skip DNS rebinding protection for the default health check endpoint. # config.host_authorization = { exclude: ->(request) { request.path == "/up" } } - # Configure Solid Errors - config.solid_errors.connects_to = { database: { writing: :errors } } - config.solid_errors.send_emails = true - config.solid_errors.email_from = Rails.application.credentials.dig(:solid_errors, :email_from) - config.solid_errors.email_to = Rails.application.credentials.dig(:solid_errors, :email_to) - config.solid_errors.email_subject_prefix = "[#{Rails.application.name}][#{Rails.env}]" - config.solid_errors.username = Rails.application.credentials.dig(:solid_errors, :username) - config.solid_errors.password = Rails.application.credentials.dig(:solid_errors, :password) end diff --git a/config/environments/test.rb b/config/environments/test.rb index 8df9697..f3cc198 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -50,5 +50,4 @@ # Raise error when a before_action's only/except options reference missing actions. config.action_controller.raise_on_missing_callback_actions = true - # config.solid_errors.connects_to = { database: { writing: :errors } } end diff --git a/config/initializers/sentry.rb b/config/initializers/sentry.rb new file mode 100644 index 0000000..83369eb --- /dev/null +++ b/config/initializers/sentry.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +Sentry.init do |config| + config.breadcrumbs_logger = [ :active_support_logger, :http_logger ] + config.dsn = Rails.application.credentials.config[:SENTRY_DSN] + config.traces_sample_rate = 1.0 + config.send_default_pii = true + config.environment = "production" + config.enabled_environments = %w[production] +end diff --git a/config/routes.rb b/config/routes.rb index 71043c3..e14ea3a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,6 @@ Rails.application.routes.draw do resources :organizations mount MissionControl::Jobs::Engine, at: "/jobs" - mount SolidErrors::Engine, at: "/solid_errors" resources :data_uploads do member do post "generate_report" => "data_uploads#generate_report" diff --git a/db/errors_schema.rb b/db/errors_schema.rb deleted file mode 100644 index 15c1ba9..0000000 --- a/db/errors_schema.rb +++ /dev/null @@ -1,40 +0,0 @@ -# This file is auto-generated from the current state of the database. Instead -# of editing this file, please use the migrations feature of Active Record to -# incrementally modify your database, and then regenerate this schema definition. -# -# This file is the source Rails uses to define your schema when running `bin/rails -# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to -# be faster and is potentially less error prone than running all of your -# migrations from scratch. Old migrations may fail to apply correctly if those -# migrations use external dependencies or application code. -# -# It's strongly recommended that you check this file into your version control system. - -ActiveRecord::Schema[8.0].define(version: 1) do - # These are extensions that must be enabled in order to support this database - enable_extension "pg_catalog.plpgsql" - - create_table "solid_errors", force: :cascade do |t| - t.text "exception_class", null: false - t.text "message", null: false - t.text "severity", null: false - t.text "source" - t.datetime "resolved_at" - t.string "fingerprint", limit: 64, null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["fingerprint"], name: "index_solid_errors_on_fingerprint", unique: true - t.index ["resolved_at"], name: "index_solid_errors_on_resolved_at" - end - - create_table "solid_errors_occurrences", force: :cascade do |t| - t.integer "error_id", null: false - t.text "backtrace" - t.json "context" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["error_id"], name: "index_solid_errors_occurrences_on_error_id" - end - - add_foreign_key "solid_errors_occurrences", "solid_errors", column: "error_id" -end From cf71043778c95552aaedb75e7923ab5842ab906a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 18:50:30 +0000 Subject: [PATCH 2/2] Bump thruster from 0.1.14 to 0.1.15 Bumps [thruster](https://github.com/basecamp/thruster) from 0.1.14 to 0.1.15. - [Changelog](https://github.com/basecamp/thruster/blob/main/CHANGELOG.md) - [Commits](https://github.com/basecamp/thruster/compare/v0.1.14...v0.1.15) --- updated-dependencies: - dependency-name: thruster dependency-version: 0.1.15 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4a520fb..843c66e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -434,11 +434,11 @@ GEM railties (>= 6.0.0) stringio (3.1.7) thor (1.4.0) - thruster (0.1.14) - thruster (0.1.14-aarch64-linux) - thruster (0.1.14-arm64-darwin) - thruster (0.1.14-x86_64-darwin) - thruster (0.1.14-x86_64-linux) + thruster (0.1.15) + thruster (0.1.15-aarch64-linux) + thruster (0.1.15-arm64-darwin) + thruster (0.1.15-x86_64-darwin) + thruster (0.1.15-x86_64-linux) timeout (0.4.3) turbo-rails (2.0.16) actionpack (>= 7.1.0)