From 82c151709e5637c5da3bb49346337ad9ec108dcc Mon Sep 17 00:00:00 2001 From: Edward Loveall Date: Fri, 10 Apr 2015 22:21:59 -0400 Subject: [PATCH] Add rollbar to track logs Rollbar is an error tracking service that integrates directly with a rails app. * Docs: https://rollbar.com/docs/notifier/rollbar-gem/ * Rouge/Rollbar docs: https://rollbar.com/rouge/rouge/ --- .sample.env | 1 + Gemfile | 1 + Gemfile.lock | 3 ++ config/initializers/rollbar.rb | 52 ++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 config/initializers/rollbar.rb diff --git a/.sample.env b/.sample.env index f54437b..11928fb 100644 --- a/.sample.env +++ b/.sample.env @@ -3,3 +3,4 @@ RACK_ENV=development SECRET_KEY_BASE=development_secret HASHIDS_SALT= GOOGLE_ANALYTICS_ID=UA-XXXXXXXX-Y +ROLLBAR_ACCESS_TOKEN=abcdefghi diff --git a/Gemfile b/Gemfile index d29f163..cb3fb7b 100644 --- a/Gemfile +++ b/Gemfile @@ -14,6 +14,7 @@ gem 'pg' gem 'rack-timeout' gem 'rails', '4.1.8' gem 'recipient_interceptor' +gem 'rollbar' gem 'rouge' gem 'sass-rails' gem 'simple_form' diff --git a/Gemfile.lock b/Gemfile.lock index ed0a1ae..4b46788 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -168,6 +168,8 @@ GEM ffi (>= 0.5.0) recipient_interceptor (0.1.2) mail + rollbar (1.5.0) + multi_json (~> 1.3) rouge (1.8.0) rspec (3.0.0) rspec-core (~> 3.0.0) @@ -272,6 +274,7 @@ DEPENDENCIES rack-timeout rails (= 4.1.8) recipient_interceptor + rollbar rouge rspec-rails (~> 3.0.0) sass-rails diff --git a/config/initializers/rollbar.rb b/config/initializers/rollbar.rb new file mode 100644 index 0000000..dc1de3c --- /dev/null +++ b/config/initializers/rollbar.rb @@ -0,0 +1,52 @@ +require 'rollbar/rails' +Rollbar.configure do |config| + # Without configuration, Rollbar is enabled in all environments. + # To disable in specific environments, set config.enabled=false. + + config.access_token = ENV['ROLLBAR_ACCESS_TOKEN'] + + # Here we'll disable in 'test': + if Rails.env.test? + config.enabled = false + end + + + # By default, Rollbar will try to call the `current_user` controller method + # to fetch the logged-in user object, and then call that object's `id`, + # `username`, and `email` methods to fetch those properties. To customize: + # config.person_method = "my_current_user" + # config.person_id_method = "my_id" + # config.person_username_method = "my_username" + # config.person_email_method = "my_email" + + # If you want to attach custom data to all exception and message reports, + # provide a lambda like the following. It should return a hash. + # config.custom_data_method = lambda { {:some_key => "some_value" } } + + # Add exception class names to the exception_level_filters hash to + # change the level that exception is reported at. Note that if an exception + # has already been reported and logged the level will need to be changed + # via the rollbar interface. + # Valid levels: 'critical', 'error', 'warning', 'info', 'debug', 'ignore' + # 'ignore' will cause the exception to not be reported at all. + # config.exception_level_filters.merge!('MyCriticalException' => 'critical') + # + # You can also specify a callable, which will be called with the exception instance. + # config.exception_level_filters.merge!('MyCriticalException' => lambda { |e| 'critical' }) + + # Enable asynchronous reporting (uses girl_friday or Threading if girl_friday + # is not installed) + # config.use_async = true + # Supply your own async handler: + # config.async_handler = Proc.new { |payload| + # Thread.new { Rollbar.process_payload_safely(payload) } + # } + + # Enable asynchronous reporting (using sucker_punch) + # config.use_sucker_punch + + # Enable delayed reporting (using Sidekiq) + # config.use_sidekiq + # You can supply custom Sidekiq options: + # config.use_sidekiq 'queue' => 'my_queue' +end