rollbar 2.16.2 → 2.22.1
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/.rubocop.yml +47 -0
- data/.travis.yml +182 -94
- data/Appraisals +10 -10
- data/Gemfile +45 -13
- data/README.md +20 -3
- data/Rakefile +0 -0
- data/data/rollbar.snippet.js +1 -1
- data/docs/configuration.md +15 -0
- data/gemfiles/rails30.gemfile +21 -14
- data/gemfiles/rails31.gemfile +21 -12
- data/gemfiles/rails32.gemfile +18 -8
- data/gemfiles/rails40.gemfile +18 -6
- data/gemfiles/rails41.gemfile +17 -6
- data/gemfiles/rails42.gemfile +24 -14
- data/gemfiles/rails50.gemfile +20 -11
- data/gemfiles/rails51.gemfile +20 -10
- data/gemfiles/rails52.gemfile +65 -0
- data/gemfiles/rails60.gemfile +67 -0
- data/lib/generators/rollbar/rollbar_generator.rb +1 -1
- data/lib/rails/rollbar_runner.rb +17 -2
- data/lib/rollbar.rb +2 -3
- data/lib/rollbar/capistrano.rb +71 -39
- data/lib/rollbar/capistrano3.rb +56 -1
- data/lib/rollbar/capistrano_tasks.rb +130 -0
- data/lib/rollbar/configuration.rb +95 -7
- data/lib/rollbar/delay/active_job.rb +17 -0
- data/lib/rollbar/delay/girl_friday.rb +2 -2
- data/lib/rollbar/delay/resque.rb +4 -6
- data/lib/rollbar/delay/shoryuken.rb +15 -9
- data/lib/rollbar/delay/sidekiq.rb +6 -8
- data/lib/rollbar/delay/sucker_punch.rb +17 -19
- data/lib/rollbar/delay/thread.rb +3 -3
- data/lib/rollbar/deploy.rb +90 -0
- data/lib/rollbar/encoding/encoder.rb +9 -9
- data/lib/rollbar/exception_reporter.rb +19 -5
- data/lib/rollbar/item.rb +62 -20
- data/lib/rollbar/item/backtrace.rb +4 -4
- data/lib/rollbar/item/frame.rb +7 -1
- data/lib/rollbar/item/locals.rb +56 -0
- data/lib/rollbar/json.rb +5 -51
- data/lib/rollbar/language_support.rb +4 -20
- data/lib/rollbar/lazy_store.rb +5 -5
- data/lib/rollbar/logger.rb +1 -0
- data/lib/rollbar/logger_proxy.rb +15 -2
- data/lib/rollbar/middleware/js.rb +110 -10
- data/lib/rollbar/middleware/js/json_value.rb +26 -0
- data/lib/rollbar/middleware/rack.rb +4 -1
- data/lib/rollbar/middleware/rails/rollbar.rb +10 -1
- data/lib/rollbar/notifier.rb +118 -49
- data/lib/rollbar/notifier/trace_with_bindings.rb +65 -0
- data/lib/rollbar/plugin.rb +54 -6
- data/lib/rollbar/plugins.rb +7 -1
- data/lib/rollbar/plugins/active_job.rb +5 -1
- data/lib/rollbar/plugins/basic_socket.rb +21 -6
- data/lib/rollbar/plugins/delayed_job/job_data.rb +3 -3
- data/lib/rollbar/plugins/delayed_job/plugin.rb +3 -3
- data/lib/rollbar/plugins/goalie.rb +11 -3
- data/lib/rollbar/plugins/rails/controller_methods.rb +17 -4
- data/lib/rollbar/plugins/rails/railtie_mixin.rb +7 -3
- data/lib/rollbar/plugins/rake.rb +2 -2
- data/lib/rollbar/plugins/sidekiq/plugin.rb +10 -6
- data/lib/rollbar/rake_tasks.rb +3 -86
- data/lib/rollbar/request_data_extractor.rb +35 -21
- data/lib/rollbar/rollbar_test.rb +147 -0
- data/lib/rollbar/scrubbers.rb +7 -3
- data/lib/rollbar/scrubbers/params.rb +38 -20
- data/lib/rollbar/scrubbers/url.rb +27 -13
- data/lib/rollbar/truncation.rb +9 -2
- data/lib/rollbar/truncation/min_body_strategy.rb +2 -3
- data/lib/rollbar/truncation/remove_any_key_strategy.rb +123 -0
- data/lib/rollbar/truncation/remove_extra_strategy.rb +35 -0
- data/lib/rollbar/truncation/remove_request_strategy.rb +21 -0
- data/lib/rollbar/truncation/strings_strategy.rb +3 -4
- data/lib/rollbar/util.rb +75 -45
- data/lib/rollbar/util/hash.rb +30 -6
- data/lib/rollbar/util/ip_anonymizer.rb +8 -7
- data/lib/rollbar/util/ip_obfuscator.rb +1 -1
- data/lib/rollbar/version.rb +1 -1
- data/lib/tasks/benchmark.rake +103 -0
- data/rollbar.gemspec +14 -8
- metadata +25 -277
- data/gemfiles/ruby_1_8_and_1_9_2.gemfile +0 -49
- data/lib/rollbar/json/default.rb +0 -11
- data/lib/rollbar/json/oj.rb +0 -16
- data/lib/rollbar/tasks/rollbar.cap +0 -47
- data/spec/cacert.pem +0 -3988
- data/spec/controllers/home_controller_spec.rb +0 -480
- data/spec/delay/sidekiq_spec.rb +0 -61
- data/spec/delay/sucker_punch_spec.rb +0 -25
- data/spec/delayed/backend/test.rb +0 -140
- 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/book.rb +0 -5
- data/spec/dummyapp/app/models/post.rb +0 -9
- data/spec/dummyapp/app/models/user.rb +0 -9
- 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.ru +0 -4
- 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 -26
- 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/secrets.yml +0 -2
- 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/migrate/20161219184410_create_books.rb +0 -10
- data/spec/dummyapp/db/migrate/20161219185529_add_username_to_users.rb +0 -5
- data/spec/dummyapp/db/schema.rb +0 -41
- 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/fixtures/plugins/dummy1.rb +0 -5
- data/spec/fixtures/plugins/dummy2.rb +0 -5
- data/spec/generators/rollbar/rollbar_generator_rails30_spec.rb +0 -31
- data/spec/generators/rollbar/rollbar_generator_spec.rb +0 -51
- data/spec/requests/home_spec.rb +0 -49
- data/spec/rollbar/configuration_spec.rb +0 -46
- data/spec/rollbar/delay/delayed_job_spec.rb +0 -22
- 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/encoding/encoder_spec.rb +0 -63
- data/spec/rollbar/item/backtrace_spec.rb +0 -26
- data/spec/rollbar/item/frame_spec.rb +0 -267
- data/spec/rollbar/item_spec.rb +0 -736
- 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 -50
- data/spec/rollbar/logger_spec.rb +0 -124
- data/spec/rollbar/middleware/js_spec.rb +0 -421
- data/spec/rollbar/middleware/sinatra_spec.rb +0 -197
- data/spec/rollbar/notifier_spec.rb +0 -56
- data/spec/rollbar/plugin_spec.rb +0 -209
- data/spec/rollbar/plugins/active_job_spec.rb +0 -38
- data/spec/rollbar/plugins/delayed_job/job_data_spec.rb +0 -48
- data/spec/rollbar/plugins/delayed_job_spec.rb +0 -129
- data/spec/rollbar/plugins/rack_spec.rb +0 -152
- data/spec/rollbar/plugins/rails_js_spec.rb +0 -19
- data/spec/rollbar/plugins/rake_spec.rb +0 -34
- data/spec/rollbar/plugins/resque/failure_spec.rb +0 -36
- data/spec/rollbar/plugins/sidekiq_spec.rb +0 -171
- data/spec/rollbar/plugins/validations_spec.rb +0 -56
- data/spec/rollbar/plugins_spec.rb +0 -68
- data/spec/rollbar/request_data_extractor_spec.rb +0 -270
- data/spec/rollbar/scrubbers/params_spec.rb +0 -314
- data/spec/rollbar/scrubbers/url_spec.rb +0 -136
- data/spec/rollbar/scrubbers_spec.rb +0 -31
- data/spec/rollbar/sidekig/clear_scope_spec.rb +0 -19
- 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/ip_anonymizer_spec.rb +0 -30
- data/spec/rollbar/util_spec.rb +0 -80
- data/spec/rollbar_bc_spec.rb +0 -380
- data/spec/rollbar_spec.rb +0 -1667
- data/spec/spec_helper.rb +0 -84
- 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/matchers.rb +0 -23
- data/spec/support/notifier_helpers.rb +0 -57
- data/spec/support/rollbar_api.rb +0 -57
- data/spec/support/shared_contexts.rb +0 -12
data/lib/rollbar/capistrano3.rb
CHANGED
|
@@ -1 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
# This is a tasks file to use with Capistrano 3
|
|
2
|
+
|
|
3
|
+
require 'net/http'
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
require 'json'
|
|
6
|
+
require 'rollbar/deploy'
|
|
7
|
+
require 'rollbar/capistrano_tasks'
|
|
8
|
+
|
|
9
|
+
namespace :rollbar do
|
|
10
|
+
# dry_run? wasn't introduced till Capistrano 3.5.0; use the old fetch(:sshkit_backed)
|
|
11
|
+
set :dry_run, (proc { ::Capistrano::Configuration.env.fetch(:sshkit_backend) == ::SSHKit::Backend::Printer })
|
|
12
|
+
|
|
13
|
+
desc 'Send deployment started notification to Rollbar.'
|
|
14
|
+
task :deploy_started do
|
|
15
|
+
on primary fetch(:rollbar_role) do
|
|
16
|
+
::Rollbar::CapistranoTasks.deploy_started(self, self, fetch(:dry_run))
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
desc 'Send deployment succeeded notification to Rollbar.'
|
|
21
|
+
task :deploy_succeeded do
|
|
22
|
+
on primary fetch(:rollbar_role) do
|
|
23
|
+
::Rollbar::CapistranoTasks.deploy_succeeded(self, self, fetch(:dry_run))
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
desc 'Send deployment failed notification to Rollbar.'
|
|
28
|
+
task :deploy_failed do
|
|
29
|
+
on primary fetch(:rollbar_role) do
|
|
30
|
+
::Rollbar::CapistranoTasks.deploy_failed(self, self, fetch(:dry_run))
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
task :fail do
|
|
35
|
+
raise StandardError
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
namespace :deploy do
|
|
40
|
+
after 'deploy:set_current_revision', 'rollbar:deploy_started'
|
|
41
|
+
after 'deploy:finished', 'rollbar:deploy_succeeded'
|
|
42
|
+
after 'deploy:failed', 'rollbar:deploy_failed'
|
|
43
|
+
|
|
44
|
+
# Used for testing :deploy_failed task
|
|
45
|
+
# after 'rollbar:deploy_started', 'rollbar:fail'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
namespace :load do
|
|
49
|
+
task :defaults do
|
|
50
|
+
set :rollbar_user, (proc { fetch :local_user, ENV['USER'] || ENV['USERNAME'] })
|
|
51
|
+
set :rollbar_env, (proc { fetch :rails_env, 'production' })
|
|
52
|
+
set :rollbar_token, (proc { abort "Please specify the Rollbar access token, set :rollbar_token, 'your token'" })
|
|
53
|
+
set :rollbar_role, (proc { :app })
|
|
54
|
+
set :rollbar_revision, (proc { fetch :current_revision })
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require 'rollbar/deploy'
|
|
2
|
+
|
|
3
|
+
module Rollbar
|
|
4
|
+
# Module containing the logic of Capistrano tasks for deploy tracking
|
|
5
|
+
module CapistranoTasks
|
|
6
|
+
class << self
|
|
7
|
+
def deploy_started(capistrano, logger, dry_run)
|
|
8
|
+
deploy_task(logger, :desc => 'Notifying Rollbar of deployment start') do
|
|
9
|
+
result = report_deploy_started(capistrano, dry_run)
|
|
10
|
+
|
|
11
|
+
debug_request_response(logger, result)
|
|
12
|
+
|
|
13
|
+
capistrano.set(:rollbar_deploy_id, 123) if dry_run
|
|
14
|
+
|
|
15
|
+
skip_in_dry_run(logger, dry_run) do
|
|
16
|
+
if result[:success] && (deploy_id = result[:data] && result[:data][:deploy_id])
|
|
17
|
+
capistrano.set :rollbar_deploy_id, deploy_id
|
|
18
|
+
else
|
|
19
|
+
logger.error 'Unable to report deploy to Rollbar' + (result[:message] ? ': ' + result[:message] : '')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def deploy_succeeded(capistrano, logger, dry_run)
|
|
26
|
+
deploy_update(capistrano, logger, dry_run, :desc => 'Setting deployment status to `succeeded` in Rollbar') do
|
|
27
|
+
report_deploy_succeeded(capistrano, dry_run)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def deploy_failed(capistrano, logger, dry_run)
|
|
32
|
+
deploy_update(capistrano, logger, dry_run, :desc => 'Setting deployment status to `failed` in Rollbar') do
|
|
33
|
+
report_deploy_failed(capistrano, dry_run)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def deploy_task(logger, opts = {})
|
|
40
|
+
capistrano_300_warning(logger)
|
|
41
|
+
logger.info opts[:desc] if opts[:desc]
|
|
42
|
+
yield
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def deploy_update(capistrano, logger, dry_run, opts = {})
|
|
46
|
+
deploy_task(logger, opts) do
|
|
47
|
+
depend_on_deploy_id(capistrano, logger) do
|
|
48
|
+
result = yield
|
|
49
|
+
|
|
50
|
+
debug_request_response(logger, result)
|
|
51
|
+
|
|
52
|
+
skip_in_dry_run(logger, dry_run) do
|
|
53
|
+
if result[:success]
|
|
54
|
+
logger.info 'Updated deploy status in Rollbar'
|
|
55
|
+
else
|
|
56
|
+
logger.error 'Unable to update deploy status in Rollbar' + (result[:message] ? ': ' + result[:message] : '')
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def capistrano_300_warning(logger)
|
|
64
|
+
logger.warn("You need to upgrade capistrano to '>= 3.1' version in order to correctly report deploys to Rollbar. (On 3.0, the reported revision will be incorrect.)") if ::Capistrano::VERSION =~ /^3\.0/
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def report_deploy_started(capistrano, dry_run)
|
|
68
|
+
::Rollbar::Deploy.report(
|
|
69
|
+
{
|
|
70
|
+
:rollbar_username => capistrano.fetch(:rollbar_user),
|
|
71
|
+
:local_username => capistrano.fetch(:rollbar_user),
|
|
72
|
+
:comment => capistrano.fetch(:rollbar_comment),
|
|
73
|
+
:status => :started,
|
|
74
|
+
:proxy => :ENV,
|
|
75
|
+
:dry_run => dry_run
|
|
76
|
+
},
|
|
77
|
+
capistrano.fetch(:rollbar_token),
|
|
78
|
+
capistrano.fetch(:rollbar_env),
|
|
79
|
+
capistrano.fetch(:rollbar_revision)
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def report_deploy_succeeded(capistrano, dry_run)
|
|
84
|
+
::Rollbar::Deploy.update(
|
|
85
|
+
{
|
|
86
|
+
:proxy => :ENV,
|
|
87
|
+
:dry_run => dry_run
|
|
88
|
+
},
|
|
89
|
+
capistrano.fetch(:rollbar_token),
|
|
90
|
+
capistrano.fetch(:rollbar_deploy_id),
|
|
91
|
+
:succeeded
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def report_deploy_failed(capistrano, dry_run)
|
|
96
|
+
::Rollbar::Deploy.update(
|
|
97
|
+
{
|
|
98
|
+
:proxy => :ENV,
|
|
99
|
+
:dry_run => dry_run
|
|
100
|
+
},
|
|
101
|
+
capistrano.fetch(:rollbar_token),
|
|
102
|
+
capistrano.fetch(:rollbar_deploy_id),
|
|
103
|
+
:failed
|
|
104
|
+
)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def depend_on_deploy_id(capistrano, logger)
|
|
108
|
+
if capistrano.fetch(:rollbar_deploy_id)
|
|
109
|
+
yield
|
|
110
|
+
else
|
|
111
|
+
logger.error 'Failed to update the deploy in Rollbar. No deploy id available.'
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def skip_in_dry_run(logger, dry_run)
|
|
116
|
+
if dry_run
|
|
117
|
+
logger.info 'Skipping sending HTTP requests to Rollbar in dry run.'
|
|
118
|
+
else
|
|
119
|
+
yield
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def debug_request_response(logger, result)
|
|
124
|
+
# NOTE: in Capistrano debug messages go to log/capistrano.log but not to stdout even if log_level == :debug
|
|
125
|
+
logger.debug result[:request_info]
|
|
126
|
+
logger.debug result[:response_info] if result[:response_info]
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -8,10 +8,12 @@ module Rollbar
|
|
|
8
8
|
attr_accessor :async_handler
|
|
9
9
|
attr_accessor :branch
|
|
10
10
|
attr_reader :before_process
|
|
11
|
+
attr_accessor :capture_uncaught
|
|
11
12
|
attr_accessor :code_version
|
|
12
13
|
attr_accessor :custom_data_method
|
|
13
14
|
attr_accessor :delayed_job_enabled
|
|
14
15
|
attr_accessor :default_logger
|
|
16
|
+
attr_reader :logger_level
|
|
15
17
|
attr_accessor :disable_monkey_patch
|
|
16
18
|
attr_accessor :disable_rack_monkey_patch
|
|
17
19
|
attr_accessor :disable_core_monkey_patch
|
|
@@ -25,6 +27,7 @@ module Rollbar
|
|
|
25
27
|
attr_accessor :framework
|
|
26
28
|
attr_accessor :ignored_person_ids
|
|
27
29
|
attr_accessor :host
|
|
30
|
+
attr_accessor :locals
|
|
28
31
|
attr_writer :logger
|
|
29
32
|
attr_accessor :payload_options
|
|
30
33
|
attr_accessor :person_method
|
|
@@ -43,6 +46,7 @@ module Rollbar
|
|
|
43
46
|
attr_accessor :scrub_fields
|
|
44
47
|
attr_accessor :scrub_user
|
|
45
48
|
attr_accessor :scrub_password
|
|
49
|
+
attr_accessor :scrub_whitelist
|
|
46
50
|
attr_accessor :collect_user_ip
|
|
47
51
|
attr_accessor :anonymize_user_ip
|
|
48
52
|
attr_accessor :user_ip_obfuscator_secret
|
|
@@ -59,20 +63,26 @@ module Rollbar
|
|
|
59
63
|
attr_reader :send_extra_frame_data
|
|
60
64
|
attr_accessor :use_exception_level_filters_default
|
|
61
65
|
attr_accessor :proxy
|
|
66
|
+
attr_accessor :raise_on_error
|
|
67
|
+
attr_accessor :transmit
|
|
68
|
+
attr_accessor :log_payload
|
|
62
69
|
|
|
63
70
|
attr_reader :project_gem_paths
|
|
71
|
+
attr_accessor :configured_options
|
|
64
72
|
|
|
65
|
-
|
|
73
|
+
alias safely? safely
|
|
66
74
|
|
|
67
|
-
DEFAULT_ENDPOINT = 'https://api.rollbar.com/api/1/item/'
|
|
68
|
-
DEFAULT_WEB_BASE = 'https://rollbar.com'
|
|
75
|
+
DEFAULT_ENDPOINT = 'https://api.rollbar.com/api/1/item/'.freeze
|
|
76
|
+
DEFAULT_WEB_BASE = 'https://rollbar.com'.freeze
|
|
69
77
|
|
|
70
78
|
def initialize
|
|
71
79
|
@async_handler = nil
|
|
72
80
|
@before_process = []
|
|
81
|
+
@capture_uncaught = nil
|
|
73
82
|
@code_version = nil
|
|
74
83
|
@custom_data_method = nil
|
|
75
84
|
@default_logger = lambda { ::Logger.new(STDERR) }
|
|
85
|
+
@logger_level = :info
|
|
76
86
|
@delayed_job_enabled = true
|
|
77
87
|
@disable_monkey_patch = false
|
|
78
88
|
@disable_core_monkey_patch = false
|
|
@@ -102,12 +112,14 @@ module Rollbar
|
|
|
102
112
|
@net_retries = 3
|
|
103
113
|
@js_enabled = false
|
|
104
114
|
@js_options = {}
|
|
115
|
+
@locals = {}
|
|
105
116
|
@scrub_fields = [:passwd, :password, :password_confirmation, :secret,
|
|
106
117
|
:confirm_password, :password_confirmation, :secret_token,
|
|
107
|
-
:api_key, :access_token]
|
|
118
|
+
:api_key, :access_token, :accessToken, :session_id]
|
|
108
119
|
@scrub_user = true
|
|
109
120
|
@scrub_password = true
|
|
110
121
|
@randomize_scrub_length = true
|
|
122
|
+
@scrub_whitelist = []
|
|
111
123
|
@uncaught_exception_level = 'error'
|
|
112
124
|
@scrub_headers = ['Authorization']
|
|
113
125
|
@sidekiq_threshold = 0
|
|
@@ -122,8 +134,17 @@ module Rollbar
|
|
|
122
134
|
@project_gem_paths = []
|
|
123
135
|
@use_exception_level_filters_default = false
|
|
124
136
|
@proxy = nil
|
|
137
|
+
@raise_on_error = false
|
|
138
|
+
@transmit = true
|
|
139
|
+
@log_payload = false
|
|
125
140
|
@collect_user_ip = true
|
|
126
141
|
@anonymize_user_ip = false
|
|
142
|
+
@hooks = {
|
|
143
|
+
:on_error_response => nil, # params: response
|
|
144
|
+
:on_report_internal_error => nil # params: exception
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@configured_options = ConfiguredOptions.new(self)
|
|
127
148
|
end
|
|
128
149
|
|
|
129
150
|
def initialize_copy(orig)
|
|
@@ -131,9 +152,18 @@ module Rollbar
|
|
|
131
152
|
|
|
132
153
|
instance_variables.each do |var|
|
|
133
154
|
instance_var = instance_variable_get(var)
|
|
134
|
-
instance_variable_set(var, Rollbar::Util
|
|
155
|
+
instance_variable_set(var, Rollbar::Util.deep_copy(instance_var))
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def wrapped_clone
|
|
160
|
+
original_clone.tap do |new_config|
|
|
161
|
+
new_config.configured_options = ConfiguredOptions.new(new_config)
|
|
162
|
+
new_config.configured_options.configured = configured_options.configured
|
|
135
163
|
end
|
|
136
164
|
end
|
|
165
|
+
alias original_clone clone
|
|
166
|
+
alias clone wrapped_clone
|
|
137
167
|
|
|
138
168
|
def merge(options)
|
|
139
169
|
new_configuration = clone
|
|
@@ -153,6 +183,15 @@ module Rollbar
|
|
|
153
183
|
self
|
|
154
184
|
end
|
|
155
185
|
|
|
186
|
+
def use_active_job(options = {})
|
|
187
|
+
require 'rollbar/delay/active_job'
|
|
188
|
+
|
|
189
|
+
Rollbar::Delay::ActiveJob.queue_as(options[:queue] || Rollbar::Delay::ActiveJob.default_queue_name)
|
|
190
|
+
|
|
191
|
+
@use_async = true
|
|
192
|
+
@async_handler = Rollbar::Delay::ActiveJob
|
|
193
|
+
end
|
|
194
|
+
|
|
156
195
|
def use_delayed_job(options = {})
|
|
157
196
|
require 'rollbar/delay/delayed_job'
|
|
158
197
|
|
|
@@ -177,8 +216,11 @@ module Rollbar
|
|
|
177
216
|
@async_handler = Rollbar::Delay::Resque
|
|
178
217
|
end
|
|
179
218
|
|
|
180
|
-
def use_shoryuken
|
|
219
|
+
def use_shoryuken(options = {})
|
|
181
220
|
require 'rollbar/delay/shoryuken' if defined?(Shoryuken)
|
|
221
|
+
|
|
222
|
+
Rollbar::Delay::Shoryuken.queue = options[:queue] if options[:queue]
|
|
223
|
+
|
|
182
224
|
@use_async = true
|
|
183
225
|
@async_handler = Rollbar::Delay::Shoryuken
|
|
184
226
|
end
|
|
@@ -202,7 +244,7 @@ module Rollbar
|
|
|
202
244
|
@async_handler = Rollbar::Delay::SuckerPunch
|
|
203
245
|
end
|
|
204
246
|
|
|
205
|
-
def use_sucker_punch=(
|
|
247
|
+
def use_sucker_punch=(_value)
|
|
206
248
|
deprecation_message = '#use_sucker_punch=(value) has been deprecated in favor of #use_sucker_punch. Please update your rollbar configuration.'
|
|
207
249
|
defined?(ActiveSupport) ? ActiveSupport::Deprecation.warn(deprecation_message) : puts(deprecation_message)
|
|
208
250
|
|
|
@@ -245,8 +287,54 @@ module Rollbar
|
|
|
245
287
|
send(option)
|
|
246
288
|
end
|
|
247
289
|
|
|
290
|
+
def logger_level=(level)
|
|
291
|
+
@logger_level = if level
|
|
292
|
+
level.to_sym
|
|
293
|
+
else
|
|
294
|
+
level
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
248
298
|
def logger
|
|
249
299
|
@logger ||= default_logger.call
|
|
250
300
|
end
|
|
301
|
+
|
|
302
|
+
def hook(symbol, &block)
|
|
303
|
+
if @hooks.key?(symbol)
|
|
304
|
+
if block_given?
|
|
305
|
+
@hooks[symbol] = block
|
|
306
|
+
else
|
|
307
|
+
@hooks[symbol]
|
|
308
|
+
end
|
|
309
|
+
else
|
|
310
|
+
raise StandardError, 'Hook :' + symbol.to_s + ' is not supported by Rollbar SDK.'
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def execute_hook(symbol, *args)
|
|
315
|
+
hook(symbol).call(*args) if hook(symbol).is_a?(Proc)
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
class ConfiguredOptions
|
|
320
|
+
attr_accessor :configuration, :configured
|
|
321
|
+
|
|
322
|
+
def initialize(configuration)
|
|
323
|
+
@configuration = configuration
|
|
324
|
+
@configured = {}
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def method_missing(method, *args, &block)
|
|
328
|
+
return super unless configuration.respond_to?(method)
|
|
329
|
+
|
|
330
|
+
method_string = method.to_s
|
|
331
|
+
configured[method_string.chomp('=').to_sym] = args.first if method_string.end_with?('=')
|
|
332
|
+
|
|
333
|
+
configuration.send(method, *args, &block)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def respond_to_missing?(method)
|
|
337
|
+
configuration.respond_to?(method) || super
|
|
338
|
+
end
|
|
251
339
|
end
|
|
252
340
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Rollbar
|
|
2
|
+
module Delay
|
|
3
|
+
# This class provides the ActiveJob async handler. Users can
|
|
4
|
+
# use ActiveJob in order to send the reports to the Rollbar API
|
|
5
|
+
class ActiveJob < ::ActiveJob::Base
|
|
6
|
+
queue_as :default
|
|
7
|
+
|
|
8
|
+
def perform(payload)
|
|
9
|
+
Rollbar.process_from_async_handler(payload)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.call(payload)
|
|
13
|
+
perform_later payload
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -11,10 +11,10 @@ module Rollbar
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def queue
|
|
14
|
-
@queue ||=
|
|
14
|
+
@queue ||= queue_class.new(nil, :size => 5) do |payload|
|
|
15
15
|
begin
|
|
16
16
|
Rollbar.process_from_async_handler(payload)
|
|
17
|
-
rescue
|
|
17
|
+
rescue StandardError
|
|
18
18
|
# According to https://github.com/mperham/girl_friday/wiki#error-handling
|
|
19
19
|
# we reraise the exception so it can be handled some way
|
|
20
20
|
raise
|
data/lib/rollbar/delay/resque.rb
CHANGED
|
@@ -23,12 +23,10 @@ module Rollbar
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def perform(payload)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
raise
|
|
31
|
-
end
|
|
26
|
+
Rollbar.process_from_async_handler(payload)
|
|
27
|
+
rescue StandardError
|
|
28
|
+
# Raise the exception so Resque can track the errored job
|
|
29
|
+
raise
|
|
32
30
|
end
|
|
33
31
|
end
|
|
34
32
|
end
|
|
@@ -8,22 +8,28 @@ module Rollbar
|
|
|
8
8
|
class Shoryuken
|
|
9
9
|
include ::Shoryuken::Worker
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
class << self
|
|
12
|
+
attr_accessor :queue
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
self.queue = "rollbar_#{Rollbar.configuration.environment}"
|
|
16
|
+
|
|
17
|
+
def self.call(payload)
|
|
18
|
+
new.call(payload, :queue => queue)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def call(payload, options = {})
|
|
22
|
+
self.class.perform_async(payload, options)
|
|
13
23
|
end
|
|
14
24
|
|
|
15
25
|
# not allowing bulk, to not double-report rollbars if one of them failed in bunch.
|
|
16
|
-
shoryuken_options :
|
|
26
|
+
shoryuken_options :auto_delete => true,
|
|
27
|
+
:body_parser => :json,
|
|
28
|
+
:retry_intervals => [60, 180, 360, 120_0, 360_0, 186_00]
|
|
17
29
|
|
|
18
|
-
## responsible for performing job. - payload is a json parsed body of the message.
|
|
19
30
|
def perform(_sqs_message, payload)
|
|
20
31
|
Rollbar.process_from_async_handler(payload)
|
|
21
32
|
end
|
|
22
|
-
|
|
23
|
-
## to push the job !
|
|
24
|
-
def call(payload)
|
|
25
|
-
self.class.perform_async(payload)
|
|
26
|
-
end
|
|
27
33
|
end
|
|
28
34
|
end
|
|
29
35
|
end
|