rollbar 2.8.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.codeclimate.yml +18 -0
- data/.github/pull_request_template.md +34 -0
- data/.github/workflows/ci.yml +67 -0
- data/.gitignore +3 -1
- data/.rubocop.yml +206 -7
- data/Appraisals +10 -10
- data/CHANGELOG.md +257 -3
- data/Gemfile +74 -13
- data/README.md +38 -833
- data/Rakefile +0 -0
- data/THANKS.md +1 -0
- data/data/rollbar.snippet.js +1 -1
- data/docs/configuration.md +64 -3
- data/docs/plugins.md +46 -0
- data/gemfiles/rails50.gemfile +56 -0
- data/gemfiles/rails51.gemfile +57 -0
- data/gemfiles/rails52.gemfile +56 -0
- data/gemfiles/rails60.gemfile +52 -0
- data/gemfiles/rails61.gemfile +52 -0
- data/gemfiles/rails70.gemfile +52 -0
- data/gemfiles/rails71.gemfile +52 -0
- data/lib/generators/rollbar/rollbar_generator.rb +24 -20
- data/lib/generators/rollbar/templates/{initializer.rb → initializer.erb} +19 -5
- data/lib/rails/rollbar_runner.rb +26 -22
- data/lib/rollbar/capistrano.rb +78 -38
- data/lib/rollbar/capistrano3.rb +62 -1
- data/lib/rollbar/capistrano_tasks.rb +166 -0
- data/lib/rollbar/configuration.rb +291 -71
- data/lib/rollbar/delay/active_job.rb +17 -0
- data/lib/rollbar/delay/delayed_job.rb +23 -0
- data/lib/rollbar/delay/girl_friday.rb +4 -9
- data/lib/rollbar/delay/resque.rb +3 -6
- data/lib/rollbar/delay/shoryuken.rb +36 -0
- data/lib/rollbar/delay/sidekiq.rb +6 -8
- data/lib/rollbar/delay/sucker_punch.rb +17 -22
- data/lib/rollbar/delay/thread.rb +74 -3
- data/lib/rollbar/deploy.rb +91 -0
- data/lib/rollbar/encoding/encoder.rb +22 -11
- data/lib/rollbar/encoding.rb +2 -7
- data/lib/rollbar/exception_reporter.rb +36 -12
- data/lib/rollbar/item/backtrace.rb +118 -0
- data/lib/rollbar/item/frame.rb +121 -0
- data/lib/rollbar/item/locals.rb +103 -0
- data/lib/rollbar/item.rb +314 -0
- data/lib/rollbar/js.rb +0 -28
- data/lib/rollbar/json.rb +7 -55
- data/lib/rollbar/language_support.rb +7 -19
- data/lib/rollbar/lazy_store.rb +8 -12
- data/lib/rollbar/logger.rb +71 -0
- data/lib/rollbar/logger_proxy.rb +18 -1
- data/lib/rollbar/middleware/js/json_value.rb +36 -0
- data/lib/rollbar/middleware/js.rb +297 -0
- data/lib/rollbar/middleware/rack/builder.rb +4 -4
- data/lib/rollbar/middleware/rack/test_session.rb +4 -4
- data/lib/rollbar/middleware/rack.rb +52 -0
- data/lib/rollbar/middleware/rails/rollbar.rb +19 -7
- data/lib/rollbar/middleware/rails/show_exceptions.rb +21 -9
- data/lib/rollbar/middleware/sinatra.rb +2 -40
- data/lib/rollbar/notifier/trace_with_bindings.rb +75 -0
- data/lib/rollbar/notifier.rb +913 -0
- data/lib/rollbar/plugin.rb +126 -0
- data/lib/rollbar/plugins/active_job.rb +54 -0
- data/lib/rollbar/plugins/basic_socket.rb +31 -0
- data/lib/rollbar/plugins/delayed_job/job_data.rb +50 -0
- data/lib/rollbar/plugins/delayed_job/plugin.rb +88 -0
- data/lib/rollbar/plugins/delayed_job.rb +12 -0
- data/lib/rollbar/plugins/error_context.rb +11 -0
- data/lib/rollbar/plugins/goalie.rb +65 -0
- data/lib/rollbar/plugins/rack.rb +18 -0
- data/lib/rollbar/plugins/rails/controller_methods.rb +56 -0
- data/lib/rollbar/plugins/rails/error_subscriber.rb +12 -0
- data/lib/rollbar/plugins/rails/railtie30.rb +18 -0
- data/lib/rollbar/plugins/rails/railtie32.rb +18 -0
- data/lib/rollbar/plugins/rails/railtie_mixin.rb +37 -0
- data/lib/rollbar/plugins/rails.rb +89 -0
- data/lib/rollbar/plugins/rake.rb +73 -0
- data/lib/rollbar/plugins/resque/failure.rb +39 -0
- data/lib/rollbar/plugins/resque.rb +11 -0
- data/lib/rollbar/plugins/sidekiq/plugin.rb +77 -0
- data/lib/rollbar/plugins/sidekiq.rb +37 -0
- data/lib/rollbar/plugins/thread.rb +14 -0
- data/lib/rollbar/plugins/validations.rb +45 -0
- data/lib/rollbar/plugins.rb +47 -0
- data/lib/rollbar/rails.rb +0 -1
- data/lib/rollbar/rake_tasks.rb +4 -66
- data/lib/rollbar/request_data_extractor.rb +157 -117
- data/lib/rollbar/rollbar_test.rb +38 -0
- data/lib/rollbar/scrubbers/params.rb +133 -0
- data/lib/rollbar/scrubbers/url.rb +90 -35
- data/lib/rollbar/scrubbers.rb +13 -0
- data/lib/rollbar/truncation/frames_strategy.rb +2 -1
- data/lib/rollbar/truncation/min_body_strategy.rb +3 -4
- data/lib/rollbar/truncation/mixin.rb +1 -1
- data/lib/rollbar/truncation/remove_any_key_strategy.rb +126 -0
- data/lib/rollbar/truncation/remove_extra_strategy.rb +37 -0
- data/lib/rollbar/truncation/remove_request_strategy.rb +21 -0
- data/lib/rollbar/truncation/strings_strategy.rb +6 -5
- data/lib/rollbar/truncation.rb +10 -4
- data/lib/rollbar/util/hash.rb +37 -6
- data/lib/rollbar/util/ip_anonymizer.rb +33 -0
- data/lib/rollbar/util/ip_obfuscator.rb +1 -1
- data/lib/rollbar/util.rb +101 -55
- data/lib/rollbar/version.rb +1 -1
- data/lib/rollbar.rb +91 -879
- data/lib/tasks/benchmark.rake +104 -0
- data/lib/tasks/tasks.rake +3 -3
- data/rollbar.gemspec +21 -32
- data/spec/support/rollbar_api.rb +67 -0
- metadata +78 -439
- data/.travis.yml +0 -155
- data/gemfiles/rails30.gemfile +0 -20
- data/gemfiles/rails31.gemfile +0 -16
- data/gemfiles/rails32.gemfile +0 -17
- data/gemfiles/rails40.gemfile +0 -17
- data/gemfiles/rails41.gemfile +0 -15
- data/gemfiles/rails42.gemfile +0 -15
- data/lib/rollbar/active_job.rb +0 -11
- data/lib/rollbar/active_record_extension.rb +0 -14
- data/lib/rollbar/core_ext/basic_socket.rb +0 -7
- data/lib/rollbar/core_ext/thread.rb +0 -9
- data/lib/rollbar/delayed_job.rb +0 -78
- data/lib/rollbar/encoding/legacy_encoder.rb +0 -20
- data/lib/rollbar/goalie.rb +0 -33
- data/lib/rollbar/js/frameworks/rails.rb +0 -29
- data/lib/rollbar/js/frameworks.rb +0 -6
- data/lib/rollbar/js/middleware.rb +0 -129
- data/lib/rollbar/js/version.rb +0 -5
- data/lib/rollbar/json/default.rb +0 -11
- data/lib/rollbar/json/oj.rb +0 -15
- data/lib/rollbar/rack.rb +0 -9
- data/lib/rollbar/rails/controller_methods.rb +0 -40
- data/lib/rollbar/railtie.rb +0 -46
- data/lib/rollbar/rake.rb +0 -38
- data/lib/rollbar/sidekiq.rb +0 -40
- data/lib/rollbar/tasks/rollbar.cap +0 -45
- data/spec/cacert.pem +0 -3988
- data/spec/controllers/home_controller_spec.rb +0 -455
- data/spec/delay/sidekiq_spec.rb +0 -61
- data/spec/delay/sucker_punch_spec.rb +0 -25
- data/spec/delayed/backend/test.rb +0 -139
- data/spec/delayed/serialization/test.rb +0 -0
- data/spec/dummyapp/.gitignore +0 -73
- data/spec/dummyapp/Rakefile +0 -7
- data/spec/dummyapp/app/assets/javascripts/application.js +0 -3
- data/spec/dummyapp/app/assets/stylesheets/application.css.scss +0 -37
- data/spec/dummyapp/app/controllers/application_controller.rb +0 -3
- data/spec/dummyapp/app/controllers/home_controller.rb +0 -60
- data/spec/dummyapp/app/controllers/users_controller.rb +0 -17
- data/spec/dummyapp/app/helpers/.gitkeep +0 -0
- data/spec/dummyapp/app/mailers/.gitkeep +0 -0
- data/spec/dummyapp/app/models/.gitkeep +0 -0
- data/spec/dummyapp/app/models/user.rb +0 -7
- data/spec/dummyapp/app/views/devise/registrations/edit.html.erb +0 -27
- data/spec/dummyapp/app/views/devise/registrations/new.html.erb +0 -20
- data/spec/dummyapp/app/views/devise/shared/_links.html.erb +0 -25
- data/spec/dummyapp/app/views/home/cause_exception.html.erb +0 -1
- data/spec/dummyapp/app/views/home/index.html.erb +0 -4
- data/spec/dummyapp/app/views/home/report_exception.html.erb +0 -1
- data/spec/dummyapp/app/views/js/test.html.erb +0 -1
- data/spec/dummyapp/app/views/layouts/_messages.html.erb +0 -5
- data/spec/dummyapp/app/views/layouts/_navigation.html.erb +0 -21
- data/spec/dummyapp/app/views/layouts/application.html.erb +0 -25
- data/spec/dummyapp/app/views/layouts/simple.html.erb +0 -18
- data/spec/dummyapp/app/views/users/index.html.erb +0 -8
- data/spec/dummyapp/app/views/users/show.html.erb +0 -3
- data/spec/dummyapp/config/application.rb +0 -59
- data/spec/dummyapp/config/boot.rb +0 -10
- data/spec/dummyapp/config/database.yml +0 -25
- data/spec/dummyapp/config/environment.rb +0 -5
- data/spec/dummyapp/config/environments/development.rb +0 -37
- data/spec/dummyapp/config/environments/production.rb +0 -67
- data/spec/dummyapp/config/environments/test.rb +0 -37
- data/spec/dummyapp/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummyapp/config/initializers/inflections.rb +0 -15
- data/spec/dummyapp/config/initializers/mime_types.rb +0 -5
- data/spec/dummyapp/config/initializers/rollbar.rb +0 -23
- data/spec/dummyapp/config/initializers/secret_token.rb +0 -7
- data/spec/dummyapp/config/initializers/session_store.rb +0 -8
- data/spec/dummyapp/config/initializers/wrap_parameters.rb +0 -16
- data/spec/dummyapp/config/locales/devise.en.yml +0 -58
- data/spec/dummyapp/config/locales/en.yml +0 -5
- data/spec/dummyapp/config/routes.rb +0 -17
- data/spec/dummyapp/config.ru +0 -4
- data/spec/dummyapp/db/migrate/20121121184652_devise_create_users.rb +0 -46
- data/spec/dummyapp/db/migrate/20121121184654_add_name_to_users.rb +0 -5
- data/spec/dummyapp/db/schema.rb +0 -35
- data/spec/dummyapp/db/seeds.rb +0 -12
- data/spec/dummyapp/lib/assets/.gitkeep +0 -0
- data/spec/dummyapp/public/404.html +0 -26
- data/spec/dummyapp/public/422.html +0 -26
- data/spec/dummyapp/public/500.html +0 -25
- data/spec/dummyapp/public/favicon.ico +0 -0
- data/spec/dummyapp/script/rails +0 -6
- data/spec/fixtures/file1 +0 -1
- data/spec/fixtures/file2 +0 -1
- data/spec/fixtures/payloads/message.json +0 -25
- data/spec/fixtures/payloads/sample.trace.json +0 -275
- data/spec/fixtures/payloads/sample.trace_chain.json +0 -530
- data/spec/generators/rollbar/rollbar_generator_spec.rb +0 -24
- data/spec/requests/home_spec.rb +0 -49
- data/spec/rollbar/active_job_spec.rb +0 -33
- data/spec/rollbar/configuration_spec.rb +0 -24
- data/spec/rollbar/delay/girl_friday_spec.rb +0 -41
- data/spec/rollbar/delay/resque_spec.rb +0 -37
- data/spec/rollbar/delay/thread_spec.rb +0 -27
- data/spec/rollbar/delayed_job/job_data.rb +0 -35
- data/spec/rollbar/delayed_job_spec.rb +0 -90
- data/spec/rollbar/encoding/encoder_spec.rb +0 -63
- data/spec/rollbar/js/frameworks/rails_spec.rb +0 -19
- data/spec/rollbar/js/middleware_spec.rb +0 -162
- data/spec/rollbar/json/oj_spec.rb +0 -18
- data/spec/rollbar/json_spec.rb +0 -110
- data/spec/rollbar/lazy_store_spec.rb +0 -99
- data/spec/rollbar/logger_proxy_spec.rb +0 -34
- data/spec/rollbar/middleware/rack/builder_spec.rb +0 -151
- data/spec/rollbar/middleware/sinatra_spec.rb +0 -197
- data/spec/rollbar/rake_spec.rb +0 -34
- data/spec/rollbar/request_data_extractor_spec.rb +0 -82
- data/spec/rollbar/scrubbers/url_spec.rb +0 -111
- data/spec/rollbar/sidekiq_spec.rb +0 -90
- data/spec/rollbar/truncation/frames_strategy_spec.rb +0 -70
- data/spec/rollbar/truncation/min_body_strategy_spec.rb +0 -57
- data/spec/rollbar/truncation/strings_strategy_spec.rb +0 -89
- data/spec/rollbar/truncation_spec.rb +0 -27
- data/spec/rollbar/util/hash_spec.rb +0 -22
- data/spec/rollbar/util_spec.rb +0 -19
- data/spec/rollbar_bc_spec.rb +0 -380
- data/spec/rollbar_spec.rb +0 -2067
- data/spec/spec_helper.rb +0 -49
- data/spec/support/cause_exception.rb +0 -1
- data/spec/support/encoding_helpers.rb +0 -8
- data/spec/support/encodings/iso_8859_9 +0 -1
- data/spec/support/fixture_helpers.rb +0 -10
- data/spec/support/get_ip_raising.rb +0 -7
- data/spec/support/helpers.rb +0 -5
- data/spec/support/notifier_helpers.rb +0 -36
- data/spec/support/shared_contexts.rb +0 -12
@@ -0,0 +1,73 @@
|
|
1
|
+
Rollbar.plugins.define('rake') do
|
2
|
+
require_dependency('rake')
|
3
|
+
dependency { !configuration.disable_monkey_patch }
|
4
|
+
dependency { defined?(Rake) }
|
5
|
+
|
6
|
+
module Rollbar
|
7
|
+
module Rake
|
8
|
+
class << self
|
9
|
+
attr_accessor :patched
|
10
|
+
end
|
11
|
+
|
12
|
+
module Handler
|
13
|
+
def self.included(base)
|
14
|
+
base.class_eval do
|
15
|
+
alias_method :orig_display_error_message, :display_error_message
|
16
|
+
alias_method :display_error_message, :display_error_message_with_rollbar
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def display_error_message_with_rollbar(ex)
|
21
|
+
Rollbar.error(ex, :use_exception_level_filters => true)
|
22
|
+
orig_display_error_message(ex)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.patch!
|
27
|
+
unless patch?
|
28
|
+
skip_patch
|
29
|
+
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
::Rake.application.instance_eval do
|
34
|
+
class << self
|
35
|
+
include ::Rollbar::Rake::Handler
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
self.patched = true
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.skip_patch
|
43
|
+
warn('[Rollbar] Rollbar is disabled for Rake tasks since your Rake ' \
|
44
|
+
'version is under 0.9.x. Please upgrade to 0.9.x or higher.')
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.patch?
|
48
|
+
return false if patched?
|
49
|
+
return false unless rake_version
|
50
|
+
|
51
|
+
major, minor, = rake_version.split('.').map(&:to_i)
|
52
|
+
|
53
|
+
major > 0 || major == 0 && minor > 8
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.patched?
|
57
|
+
patched
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.rake_version
|
61
|
+
if Object.const_defined?('RAKEVERSION')
|
62
|
+
RAKEVERSION
|
63
|
+
elsif ::Rake.const_defined?('VERSION')
|
64
|
+
::Rake::VERSION
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
execute do
|
71
|
+
Rollbar::Rake.patch!
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rollbar'
|
2
|
+
|
3
|
+
module Resque
|
4
|
+
module Failure
|
5
|
+
# Falure class to use in Resque in order to send
|
6
|
+
# Resque errors to the Rollbar API
|
7
|
+
class Rollbar < Base
|
8
|
+
def save
|
9
|
+
payload_with_options =
|
10
|
+
if use_exception_level_filters?
|
11
|
+
payload.merge(:use_exception_level_filters => true)
|
12
|
+
else
|
13
|
+
payload
|
14
|
+
end
|
15
|
+
|
16
|
+
rollbar.error(exception, payload_with_options)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# We want to disable async reporting since original
|
22
|
+
# resque-rollbar implementation disabled it.
|
23
|
+
def rollbar
|
24
|
+
notifier = ::Rollbar.notifier.scope
|
25
|
+
notifier.configuration.use_async = false
|
26
|
+
|
27
|
+
notifier
|
28
|
+
end
|
29
|
+
|
30
|
+
def use_exception_level_filters?
|
31
|
+
Gem::Version.new(rollbar_version) > Gem::Version.new('1.3.0')
|
32
|
+
end
|
33
|
+
|
34
|
+
def rollbar_version
|
35
|
+
::Rollbar::VERSION
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Rollbar.plugins.define('resque') do
|
2
|
+
require_dependency('resque')
|
3
|
+
|
4
|
+
# We want to have Resque::Failure::Rollbar loaded before
|
5
|
+
# possible initializers, so the users can use the class
|
6
|
+
# when configuring Rollbar::Failure.backend or
|
7
|
+
# Rollbar::Failure::Multiple.classes
|
8
|
+
execute! do
|
9
|
+
require 'rollbar/plugins/resque/failure'
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'rollbar/scrubbers/params'
|
2
|
+
|
3
|
+
module Rollbar
|
4
|
+
class Sidekiq
|
5
|
+
PARAM_BLACKLIST = %w[backtrace error_backtrace error_message error_class].freeze
|
6
|
+
|
7
|
+
class ResetScope
|
8
|
+
def call(_worker, msg, _queue, &block)
|
9
|
+
Rollbar.reset_notifier! # clears scope
|
10
|
+
|
11
|
+
return yield unless Rollbar.configuration.sidekiq_use_scoped_block
|
12
|
+
|
13
|
+
Rollbar.scoped(Rollbar::Sidekiq.job_scope(msg), &block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.handle_exception(msg, e)
|
18
|
+
return if skip_report?(msg, e)
|
19
|
+
|
20
|
+
Rollbar.scope(job_scope(msg)).error(e, :use_exception_level_filters => true)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.skip_report?(msg, _e)
|
24
|
+
job_hash = job_hash_from_msg(msg)
|
25
|
+
|
26
|
+
return false if job_hash.nil?
|
27
|
+
|
28
|
+
# when rollbar middleware catches, sidekiq's retry_job processor hasn't set
|
29
|
+
# the retry_count for the current job yet, so adding 1 gives the actual retry count
|
30
|
+
actual_retry_count = job_hash.fetch('retry_count', -1) + 1
|
31
|
+
job_hash['retry'] && actual_retry_count < ::Rollbar.configuration.sidekiq_threshold
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.job_scope(msg)
|
35
|
+
scope = {
|
36
|
+
:framework => "Sidekiq: #{::Sidekiq::VERSION}"
|
37
|
+
}
|
38
|
+
job_hash = job_hash_from_msg(msg)
|
39
|
+
|
40
|
+
unless job_hash.nil?
|
41
|
+
params = job_hash.reject { |k| PARAM_BLACKLIST.include?(k) }
|
42
|
+
scope[:request] = { :params => scrub_params(params) }
|
43
|
+
scope[:context] = params['class']
|
44
|
+
scope[:queue] = params['queue']
|
45
|
+
end
|
46
|
+
|
47
|
+
scope
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.scrub_params(params)
|
51
|
+
options = {
|
52
|
+
:params => params,
|
53
|
+
:config => Rollbar.configuration.scrub_fields,
|
54
|
+
:whitelist => Rollbar.configuration.scrub_whitelist
|
55
|
+
}
|
56
|
+
|
57
|
+
Rollbar::Scrubbers::Params.call(options)
|
58
|
+
end
|
59
|
+
|
60
|
+
# see https://github.com/mperham/sidekiq/wiki/Middleware#server-middleware
|
61
|
+
def call(_worker, msg, _queue, &block)
|
62
|
+
Rollbar.reset_notifier! # clears scope
|
63
|
+
|
64
|
+
return yield unless Rollbar.configuration.sidekiq_use_scoped_block
|
65
|
+
|
66
|
+
Rollbar.scoped(Rollbar::Sidekiq.job_scope(msg), &block)
|
67
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
68
|
+
Rollbar::Sidekiq.handle_exception(msg, e)
|
69
|
+
raise
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.job_hash_from_msg(msg)
|
73
|
+
msg && (msg[:job] || msg)
|
74
|
+
end
|
75
|
+
private_class_method :job_hash_from_msg
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Rollbar.plugins.define('sidekiq >= 3') do
|
2
|
+
require_dependency('sidekiq')
|
3
|
+
dependency { !configuration.disable_monkey_patch }
|
4
|
+
dependency { defined?(Sidekiq) }
|
5
|
+
dependency { Sidekiq::VERSION.split('.')[0].to_i >= 3 }
|
6
|
+
|
7
|
+
execute do
|
8
|
+
require 'rollbar/plugins/sidekiq/plugin'
|
9
|
+
|
10
|
+
Sidekiq.configure_server do |config|
|
11
|
+
config.server_middleware do |chain|
|
12
|
+
chain.add Rollbar::Sidekiq::ResetScope
|
13
|
+
end
|
14
|
+
|
15
|
+
config.error_handlers << proc do |e, context, _sidekiq_config = nil|
|
16
|
+
Rollbar::Sidekiq.handle_exception(context, e)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Rollbar.plugins.define('sidekiq < 3') do
|
23
|
+
require_dependency('sidekiq')
|
24
|
+
dependency { !configuration.disable_monkey_patch }
|
25
|
+
dependency { defined?(Sidekiq) }
|
26
|
+
dependency { Sidekiq::VERSION.split('.')[0].to_i < 3 }
|
27
|
+
|
28
|
+
execute do
|
29
|
+
require 'rollbar/plugins/sidekiq/plugin'
|
30
|
+
|
31
|
+
Sidekiq.configure_server do |config|
|
32
|
+
config.server_middleware do |chain|
|
33
|
+
chain.add Rollbar::Sidekiq
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Rollbar.plugins.define('thread') do
|
2
|
+
module Rollbar
|
3
|
+
module ThreadPlugin
|
4
|
+
def initialize(*args)
|
5
|
+
self[:_rollbar_notifier] ||= Rollbar.notifier.scope
|
6
|
+
super
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
execute do
|
12
|
+
Thread.send(:prepend, Rollbar::ThreadPlugin)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Rollbar.plugins.define('active_model') do
|
2
|
+
dependency { !configuration.disable_monkey_patch }
|
3
|
+
dependency { defined?(ActiveModel::Validations) }
|
4
|
+
dependency do
|
5
|
+
require 'active_model/version'
|
6
|
+
|
7
|
+
ActiveModel::VERSION::MAJOR >= 3
|
8
|
+
end
|
9
|
+
|
10
|
+
execute! do
|
11
|
+
module Rollbar
|
12
|
+
# Module that defines methods to be used by instances using
|
13
|
+
# ActiveModel::Validations
|
14
|
+
# The name is ActiveRecordExtension in order to not break backwards
|
15
|
+
# compatibility, although probably it should be named
|
16
|
+
# Rollbar::ValidationsExtension or similar
|
17
|
+
module ActiveRecordExtension
|
18
|
+
def report_validation_errors_to_rollbar
|
19
|
+
errors.full_messages.each do |error|
|
20
|
+
Rollbar.log_info(
|
21
|
+
"[Rollbar] Reporting form validation error: #{error} for #{self}"
|
22
|
+
)
|
23
|
+
Rollbar.warning("Form Validation Error: #{error} for #{self}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
execute! do
|
31
|
+
ActiveModel::Validations.module_eval do
|
32
|
+
include Rollbar::ActiveRecordExtension
|
33
|
+
end
|
34
|
+
|
35
|
+
active_support_was_defined = defined?(ActiveRecord::Base)
|
36
|
+
|
37
|
+
ActiveSupport.on_load(:active_record) do
|
38
|
+
if active_support_was_defined
|
39
|
+
ActiveRecord::Base.class_eval do
|
40
|
+
include Rollbar::ActiveRecordExtension
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rollbar/plugin'
|
2
|
+
|
3
|
+
module Rollbar
|
4
|
+
# Stores the available plugin definitions and loads them
|
5
|
+
class Plugins
|
6
|
+
attr_reader :collection
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@collection = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def require_all
|
13
|
+
Dir.glob(plugin_files).each do |file|
|
14
|
+
require file.to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def plugin_files
|
19
|
+
File.expand_path('../plugins/*.rb', __FILE__)
|
20
|
+
end
|
21
|
+
|
22
|
+
def define(name, &block)
|
23
|
+
return if loaded?(name)
|
24
|
+
|
25
|
+
plugin = Rollbar::Plugin.new(name)
|
26
|
+
collection << plugin
|
27
|
+
|
28
|
+
plugin.instance_eval(&block)
|
29
|
+
end
|
30
|
+
|
31
|
+
def load!
|
32
|
+
collection.each do |plugin|
|
33
|
+
plugin.load! unless plugin.on_demand
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def get(name)
|
38
|
+
collection.find { |plugin| plugin.name == name }
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def loaded?(name)
|
44
|
+
collection.any? { |plugin| plugin.name == name }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/rollbar/rails.rb
CHANGED
data/lib/rollbar/rake_tasks.rb
CHANGED
@@ -1,71 +1,9 @@
|
|
1
|
-
require 'rollbar'
|
2
|
-
|
3
1
|
namespace :rollbar do
|
4
|
-
desc
|
2
|
+
desc 'Verify your gem installation by sending a test message to Rollbar'
|
5
3
|
task :test => [:environment] do
|
6
|
-
|
7
|
-
|
8
|
-
Logger.new(STDOUT)
|
9
|
-
|
10
|
-
Rails.logger.level = Logger::DEBUG
|
11
|
-
Rollbar.preconfigure do |config|
|
12
|
-
config.logger = Rails.logger
|
13
|
-
end
|
14
|
-
|
15
|
-
class RollbarTestingException < RuntimeError; end
|
16
|
-
|
17
|
-
unless Rollbar.configuration.access_token
|
18
|
-
puts "Rollbar needs an access token configured. Check the README for instructions."
|
19
|
-
exit
|
20
|
-
end
|
21
|
-
|
22
|
-
Rollbar.error('Test error from rollbar:test')
|
23
|
-
|
24
|
-
begin
|
25
|
-
require './app/controllers/application_controller'
|
26
|
-
rescue LoadError
|
27
|
-
end
|
28
|
-
|
29
|
-
unless defined?(ApplicationController)
|
30
|
-
puts "No ApplicationController found, using ActionController::Base instead"
|
31
|
-
class ApplicationController < ActionController::Base; end
|
32
|
-
end
|
33
|
-
|
34
|
-
puts "Setting up the controller."
|
35
|
-
class ApplicationController
|
36
|
-
prepend_before_filter :test_rollbar
|
37
|
-
def test_rollbar
|
38
|
-
puts "Raising RollbarTestingException to simulate app failure."
|
39
|
-
raise RollbarTestingException.new, 'Testing rollbar with "rake rollbar:test". If you can see this, it works.'
|
40
|
-
end
|
41
|
-
|
42
|
-
def verify
|
43
|
-
end
|
44
|
-
|
45
|
-
def logger
|
46
|
-
nil
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
class RollbarTestController < ApplicationController; end
|
51
|
-
|
52
|
-
Rails.application.routes_reloader.execute_if_updated
|
53
|
-
Rails.application.routes.draw do
|
54
|
-
get 'verify' => 'application#verify', :as => 'verify'
|
55
|
-
end
|
56
|
-
|
57
|
-
# from http://stackoverflow.com/questions/5270835/authlogic-activation-problems
|
58
|
-
if defined? Authlogic
|
59
|
-
Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
|
60
|
-
end
|
61
|
-
|
62
|
-
puts "Processing..."
|
63
|
-
protocol = (defined? Rails.application.config.force_ssl && Rails.application.config.force_ssl) ? 'https' : 'http'
|
64
|
-
env = Rack::MockRequest.env_for("#{protocol}://www.example.com/verify")
|
65
|
-
status, headers, response = Rails.application.call(env)
|
4
|
+
rollbar_dir = Gem.loaded_specs['rollbar'].full_gem_path
|
5
|
+
require "#{rollbar_dir}/lib/rollbar/rollbar_test"
|
66
6
|
|
67
|
-
|
68
|
-
puts "Test failed! You may have a configuration issue, or you could be using a gem that's blocking the test. Contact support@rollbar.com if you need help troubleshooting."
|
69
|
-
end
|
7
|
+
RollbarTest.run
|
70
8
|
end
|
71
9
|
end
|