diff --git a/Gemfile b/Gemfile index aa98bc4ed..1cc47e28d 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,7 @@ gem "rails", "5.1.7" gem "acts-as-taggable-on", "~> 6.5.0" gem "acts_as_votable", "~> 0.11.1" gem "ahoy_matey", "~> 1.6.0" +gem "airbrake", "~> 5.0" gem "ancestry", "~> 3.0.7" gem "audited", "~> 4.9.0" gem "autoprefixer-rails", "~> 8.2.0" diff --git a/Gemfile.lock b/Gemfile.lock index 9e64c8c66..62abd4917 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -63,6 +63,9 @@ GEM safely_block (>= 0.1.1) user_agent_parser uuidtools + airbrake (5.8.1) + airbrake-ruby (~> 1.8) + airbrake-ruby (1.8.0) airbrussh (1.4.0) sshkit (>= 1.6.1, != 1.7.0) akami (1.3.1) @@ -621,6 +624,7 @@ DEPENDENCIES acts-as-taggable-on (~> 6.5.0) acts_as_votable (~> 0.11.1) ahoy_matey (~> 1.6.0) + airbrake (~> 5.0) ancestry (~> 3.0.7) audited (~> 4.9.0) autoprefixer-rails (~> 8.2.0) diff --git a/config/initializers/errbit.rb b/config/initializers/errbit.rb new file mode 100644 index 000000000..bb22b04ba --- /dev/null +++ b/config/initializers/errbit.rb @@ -0,0 +1,31 @@ +Airbrake.configure do |config| + config.host = Rails.application.secrets.errbit_host + config.project_id = Rails.application.secrets.errbit_project_id + config.project_key = Rails.application.secrets.errbit_project_key + + config.environment = Rails.env + config.ignore_environments = %w[development test] + config.ignore_environments += [Rails.env] if Rails.application.secrets.errbit_project_id.blank? +end + +Airbrake.add_filter do |notice| + ignorables = %w[ActiveRecord::RecordNotFound] + notice.ignore! if ignorables.include? notice[:errors].first[:type] +end + +if Rails.application.secrets.errbit_self_hosted_ssl.present? + # Patch from: https://mensfeld.pl/2016/05/setting-up-errbit-reporter-airbrake-v5-gem-to-work-with-self-signed-https-certificate/ + module Patches + module Airbrake + module SyncSender + def build_https(uri) + super.tap do |req| + req.verify_mode = OpenSSL::SSL::VERIFY_NONE + end + end + end + end + end + + Airbrake::SyncSender.prepend(::Patches::Airbrake::SyncSender) +end diff --git a/config/initializers/rollbar.rb b/config/initializers/rollbar.rb index 95ebb341c..3c5ecec3c 100644 --- a/config/initializers/rollbar.rb +++ b/config/initializers/rollbar.rb @@ -7,7 +7,7 @@ Rollbar.configure do |config| # Here we'll disable all environments except 'staging', 'preproduction' and 'production': if Rails.env.staging? || Rails.env.preproduction? || Rails.env.production? - config.enabled = true + config.enabled = Rails.application.secrets.rollbar_server_token.present? else config.enabled = false end diff --git a/config/secrets.yml.example b/config/secrets.yml.example index 6b81a6400..da94d81d7 100644 --- a/config/secrets.yml.example +++ b/config/secrets.yml.example @@ -43,6 +43,10 @@ staging: # :enable_starttls_auto: true force_ssl: true delay_jobs: true + errbit_host: "" + errbit_project_key: "" + errbit_project_id: 1 + errbit_self_hosted_ssl: false rollbar_server_token: "" http_basic_username: "" http_basic_password: "" @@ -66,6 +70,10 @@ preproduction: # :enable_starttls_auto: true force_ssl: true delay_jobs: true + errbit_host: "" + errbit_project_key: "" + errbit_project_id: 1 + errbit_self_hosted_ssl: false rollbar_server_token: "" http_basic_username: "" http_basic_password: "" @@ -94,6 +102,10 @@ production: # :enable_starttls_auto: true force_ssl: true delay_jobs: true + errbit_host: "" + errbit_project_key: "" + errbit_project_id: 1 + errbit_self_hosted_ssl: false rollbar_server_token: "" http_basic_username: "" http_basic_password: ""