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.
Files changed (212) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +47 -0
  3. data/.travis.yml +182 -94
  4. data/Appraisals +10 -10
  5. data/Gemfile +45 -13
  6. data/README.md +20 -3
  7. data/Rakefile +0 -0
  8. data/data/rollbar.snippet.js +1 -1
  9. data/docs/configuration.md +15 -0
  10. data/gemfiles/rails30.gemfile +21 -14
  11. data/gemfiles/rails31.gemfile +21 -12
  12. data/gemfiles/rails32.gemfile +18 -8
  13. data/gemfiles/rails40.gemfile +18 -6
  14. data/gemfiles/rails41.gemfile +17 -6
  15. data/gemfiles/rails42.gemfile +24 -14
  16. data/gemfiles/rails50.gemfile +20 -11
  17. data/gemfiles/rails51.gemfile +20 -10
  18. data/gemfiles/rails52.gemfile +65 -0
  19. data/gemfiles/rails60.gemfile +67 -0
  20. data/lib/generators/rollbar/rollbar_generator.rb +1 -1
  21. data/lib/rails/rollbar_runner.rb +17 -2
  22. data/lib/rollbar.rb +2 -3
  23. data/lib/rollbar/capistrano.rb +71 -39
  24. data/lib/rollbar/capistrano3.rb +56 -1
  25. data/lib/rollbar/capistrano_tasks.rb +130 -0
  26. data/lib/rollbar/configuration.rb +95 -7
  27. data/lib/rollbar/delay/active_job.rb +17 -0
  28. data/lib/rollbar/delay/girl_friday.rb +2 -2
  29. data/lib/rollbar/delay/resque.rb +4 -6
  30. data/lib/rollbar/delay/shoryuken.rb +15 -9
  31. data/lib/rollbar/delay/sidekiq.rb +6 -8
  32. data/lib/rollbar/delay/sucker_punch.rb +17 -19
  33. data/lib/rollbar/delay/thread.rb +3 -3
  34. data/lib/rollbar/deploy.rb +90 -0
  35. data/lib/rollbar/encoding/encoder.rb +9 -9
  36. data/lib/rollbar/exception_reporter.rb +19 -5
  37. data/lib/rollbar/item.rb +62 -20
  38. data/lib/rollbar/item/backtrace.rb +4 -4
  39. data/lib/rollbar/item/frame.rb +7 -1
  40. data/lib/rollbar/item/locals.rb +56 -0
  41. data/lib/rollbar/json.rb +5 -51
  42. data/lib/rollbar/language_support.rb +4 -20
  43. data/lib/rollbar/lazy_store.rb +5 -5
  44. data/lib/rollbar/logger.rb +1 -0
  45. data/lib/rollbar/logger_proxy.rb +15 -2
  46. data/lib/rollbar/middleware/js.rb +110 -10
  47. data/lib/rollbar/middleware/js/json_value.rb +26 -0
  48. data/lib/rollbar/middleware/rack.rb +4 -1
  49. data/lib/rollbar/middleware/rails/rollbar.rb +10 -1
  50. data/lib/rollbar/notifier.rb +118 -49
  51. data/lib/rollbar/notifier/trace_with_bindings.rb +65 -0
  52. data/lib/rollbar/plugin.rb +54 -6
  53. data/lib/rollbar/plugins.rb +7 -1
  54. data/lib/rollbar/plugins/active_job.rb +5 -1
  55. data/lib/rollbar/plugins/basic_socket.rb +21 -6
  56. data/lib/rollbar/plugins/delayed_job/job_data.rb +3 -3
  57. data/lib/rollbar/plugins/delayed_job/plugin.rb +3 -3
  58. data/lib/rollbar/plugins/goalie.rb +11 -3
  59. data/lib/rollbar/plugins/rails/controller_methods.rb +17 -4
  60. data/lib/rollbar/plugins/rails/railtie_mixin.rb +7 -3
  61. data/lib/rollbar/plugins/rake.rb +2 -2
  62. data/lib/rollbar/plugins/sidekiq/plugin.rb +10 -6
  63. data/lib/rollbar/rake_tasks.rb +3 -86
  64. data/lib/rollbar/request_data_extractor.rb +35 -21
  65. data/lib/rollbar/rollbar_test.rb +147 -0
  66. data/lib/rollbar/scrubbers.rb +7 -3
  67. data/lib/rollbar/scrubbers/params.rb +38 -20
  68. data/lib/rollbar/scrubbers/url.rb +27 -13
  69. data/lib/rollbar/truncation.rb +9 -2
  70. data/lib/rollbar/truncation/min_body_strategy.rb +2 -3
  71. data/lib/rollbar/truncation/remove_any_key_strategy.rb +123 -0
  72. data/lib/rollbar/truncation/remove_extra_strategy.rb +35 -0
  73. data/lib/rollbar/truncation/remove_request_strategy.rb +21 -0
  74. data/lib/rollbar/truncation/strings_strategy.rb +3 -4
  75. data/lib/rollbar/util.rb +75 -45
  76. data/lib/rollbar/util/hash.rb +30 -6
  77. data/lib/rollbar/util/ip_anonymizer.rb +8 -7
  78. data/lib/rollbar/util/ip_obfuscator.rb +1 -1
  79. data/lib/rollbar/version.rb +1 -1
  80. data/lib/tasks/benchmark.rake +103 -0
  81. data/rollbar.gemspec +14 -8
  82. metadata +25 -277
  83. data/gemfiles/ruby_1_8_and_1_9_2.gemfile +0 -49
  84. data/lib/rollbar/json/default.rb +0 -11
  85. data/lib/rollbar/json/oj.rb +0 -16
  86. data/lib/rollbar/tasks/rollbar.cap +0 -47
  87. data/spec/cacert.pem +0 -3988
  88. data/spec/controllers/home_controller_spec.rb +0 -480
  89. data/spec/delay/sidekiq_spec.rb +0 -61
  90. data/spec/delay/sucker_punch_spec.rb +0 -25
  91. data/spec/delayed/backend/test.rb +0 -140
  92. data/spec/delayed/serialization/test.rb +0 -0
  93. data/spec/dummyapp/.gitignore +0 -73
  94. data/spec/dummyapp/Rakefile +0 -7
  95. data/spec/dummyapp/app/assets/javascripts/application.js +0 -3
  96. data/spec/dummyapp/app/assets/stylesheets/application.css.scss +0 -37
  97. data/spec/dummyapp/app/controllers/application_controller.rb +0 -3
  98. data/spec/dummyapp/app/controllers/home_controller.rb +0 -60
  99. data/spec/dummyapp/app/controllers/users_controller.rb +0 -17
  100. data/spec/dummyapp/app/helpers/.gitkeep +0 -0
  101. data/spec/dummyapp/app/mailers/.gitkeep +0 -0
  102. data/spec/dummyapp/app/models/.gitkeep +0 -0
  103. data/spec/dummyapp/app/models/book.rb +0 -5
  104. data/spec/dummyapp/app/models/post.rb +0 -9
  105. data/spec/dummyapp/app/models/user.rb +0 -9
  106. data/spec/dummyapp/app/views/devise/registrations/edit.html.erb +0 -27
  107. data/spec/dummyapp/app/views/devise/registrations/new.html.erb +0 -20
  108. data/spec/dummyapp/app/views/devise/shared/_links.html.erb +0 -25
  109. data/spec/dummyapp/app/views/home/cause_exception.html.erb +0 -1
  110. data/spec/dummyapp/app/views/home/index.html.erb +0 -4
  111. data/spec/dummyapp/app/views/home/report_exception.html.erb +0 -1
  112. data/spec/dummyapp/app/views/js/test.html.erb +0 -1
  113. data/spec/dummyapp/app/views/layouts/_messages.html.erb +0 -5
  114. data/spec/dummyapp/app/views/layouts/_navigation.html.erb +0 -21
  115. data/spec/dummyapp/app/views/layouts/application.html.erb +0 -25
  116. data/spec/dummyapp/app/views/layouts/simple.html.erb +0 -18
  117. data/spec/dummyapp/app/views/users/index.html.erb +0 -8
  118. data/spec/dummyapp/app/views/users/show.html.erb +0 -3
  119. data/spec/dummyapp/config.ru +0 -4
  120. data/spec/dummyapp/config/application.rb +0 -59
  121. data/spec/dummyapp/config/boot.rb +0 -10
  122. data/spec/dummyapp/config/database.yml +0 -25
  123. data/spec/dummyapp/config/environment.rb +0 -5
  124. data/spec/dummyapp/config/environments/development.rb +0 -37
  125. data/spec/dummyapp/config/environments/production.rb +0 -67
  126. data/spec/dummyapp/config/environments/test.rb +0 -37
  127. data/spec/dummyapp/config/initializers/backtrace_silencers.rb +0 -7
  128. data/spec/dummyapp/config/initializers/inflections.rb +0 -15
  129. data/spec/dummyapp/config/initializers/mime_types.rb +0 -5
  130. data/spec/dummyapp/config/initializers/rollbar.rb +0 -26
  131. data/spec/dummyapp/config/initializers/secret_token.rb +0 -7
  132. data/spec/dummyapp/config/initializers/session_store.rb +0 -8
  133. data/spec/dummyapp/config/initializers/wrap_parameters.rb +0 -16
  134. data/spec/dummyapp/config/locales/devise.en.yml +0 -58
  135. data/spec/dummyapp/config/locales/en.yml +0 -5
  136. data/spec/dummyapp/config/routes.rb +0 -17
  137. data/spec/dummyapp/config/secrets.yml +0 -2
  138. data/spec/dummyapp/db/migrate/20121121184652_devise_create_users.rb +0 -46
  139. data/spec/dummyapp/db/migrate/20121121184654_add_name_to_users.rb +0 -5
  140. data/spec/dummyapp/db/migrate/20161219184410_create_books.rb +0 -10
  141. data/spec/dummyapp/db/migrate/20161219185529_add_username_to_users.rb +0 -5
  142. data/spec/dummyapp/db/schema.rb +0 -41
  143. data/spec/dummyapp/db/seeds.rb +0 -12
  144. data/spec/dummyapp/lib/assets/.gitkeep +0 -0
  145. data/spec/dummyapp/public/404.html +0 -26
  146. data/spec/dummyapp/public/422.html +0 -26
  147. data/spec/dummyapp/public/500.html +0 -25
  148. data/spec/dummyapp/public/favicon.ico +0 -0
  149. data/spec/dummyapp/script/rails +0 -6
  150. data/spec/fixtures/file1 +0 -1
  151. data/spec/fixtures/file2 +0 -1
  152. data/spec/fixtures/payloads/message.json +0 -25
  153. data/spec/fixtures/payloads/sample.trace.json +0 -275
  154. data/spec/fixtures/payloads/sample.trace_chain.json +0 -530
  155. data/spec/fixtures/plugins/dummy1.rb +0 -5
  156. data/spec/fixtures/plugins/dummy2.rb +0 -5
  157. data/spec/generators/rollbar/rollbar_generator_rails30_spec.rb +0 -31
  158. data/spec/generators/rollbar/rollbar_generator_spec.rb +0 -51
  159. data/spec/requests/home_spec.rb +0 -49
  160. data/spec/rollbar/configuration_spec.rb +0 -46
  161. data/spec/rollbar/delay/delayed_job_spec.rb +0 -22
  162. data/spec/rollbar/delay/girl_friday_spec.rb +0 -41
  163. data/spec/rollbar/delay/resque_spec.rb +0 -37
  164. data/spec/rollbar/delay/thread_spec.rb +0 -27
  165. data/spec/rollbar/encoding/encoder_spec.rb +0 -63
  166. data/spec/rollbar/item/backtrace_spec.rb +0 -26
  167. data/spec/rollbar/item/frame_spec.rb +0 -267
  168. data/spec/rollbar/item_spec.rb +0 -736
  169. data/spec/rollbar/json/oj_spec.rb +0 -18
  170. data/spec/rollbar/json_spec.rb +0 -110
  171. data/spec/rollbar/lazy_store_spec.rb +0 -99
  172. data/spec/rollbar/logger_proxy_spec.rb +0 -50
  173. data/spec/rollbar/logger_spec.rb +0 -124
  174. data/spec/rollbar/middleware/js_spec.rb +0 -421
  175. data/spec/rollbar/middleware/sinatra_spec.rb +0 -197
  176. data/spec/rollbar/notifier_spec.rb +0 -56
  177. data/spec/rollbar/plugin_spec.rb +0 -209
  178. data/spec/rollbar/plugins/active_job_spec.rb +0 -38
  179. data/spec/rollbar/plugins/delayed_job/job_data_spec.rb +0 -48
  180. data/spec/rollbar/plugins/delayed_job_spec.rb +0 -129
  181. data/spec/rollbar/plugins/rack_spec.rb +0 -152
  182. data/spec/rollbar/plugins/rails_js_spec.rb +0 -19
  183. data/spec/rollbar/plugins/rake_spec.rb +0 -34
  184. data/spec/rollbar/plugins/resque/failure_spec.rb +0 -36
  185. data/spec/rollbar/plugins/sidekiq_spec.rb +0 -171
  186. data/spec/rollbar/plugins/validations_spec.rb +0 -56
  187. data/spec/rollbar/plugins_spec.rb +0 -68
  188. data/spec/rollbar/request_data_extractor_spec.rb +0 -270
  189. data/spec/rollbar/scrubbers/params_spec.rb +0 -314
  190. data/spec/rollbar/scrubbers/url_spec.rb +0 -136
  191. data/spec/rollbar/scrubbers_spec.rb +0 -31
  192. data/spec/rollbar/sidekig/clear_scope_spec.rb +0 -19
  193. data/spec/rollbar/truncation/frames_strategy_spec.rb +0 -70
  194. data/spec/rollbar/truncation/min_body_strategy_spec.rb +0 -57
  195. data/spec/rollbar/truncation/strings_strategy_spec.rb +0 -89
  196. data/spec/rollbar/truncation_spec.rb +0 -27
  197. data/spec/rollbar/util/hash_spec.rb +0 -22
  198. data/spec/rollbar/util/ip_anonymizer_spec.rb +0 -30
  199. data/spec/rollbar/util_spec.rb +0 -80
  200. data/spec/rollbar_bc_spec.rb +0 -380
  201. data/spec/rollbar_spec.rb +0 -1667
  202. data/spec/spec_helper.rb +0 -84
  203. data/spec/support/cause_exception.rb +0 -1
  204. data/spec/support/encoding_helpers.rb +0 -8
  205. data/spec/support/encodings/iso_8859_9 +0 -1
  206. data/spec/support/fixture_helpers.rb +0 -10
  207. data/spec/support/get_ip_raising.rb +0 -7
  208. data/spec/support/helpers.rb +0 -5
  209. data/spec/support/matchers.rb +0 -23
  210. data/spec/support/notifier_helpers.rb +0 -57
  211. data/spec/support/rollbar_api.rb +0 -57
  212. data/spec/support/shared_contexts.rb +0 -12
data/spec/spec_helper.rb DELETED
@@ -1,84 +0,0 @@
1
- begin
2
- require 'simplecov'
3
- require 'codeclimate-test-reporter'
4
-
5
- SimpleCov.start do
6
- add_filter '/spec/'
7
-
8
- formatter SimpleCov::Formatter::MultiFormatter.new([
9
- SimpleCov::Formatter::HTMLFormatter,
10
- CodeClimate::TestReporter::Formatter
11
- ])
12
- end
13
- rescue LoadError
14
- end
15
-
16
- require 'rubygems'
17
-
18
- ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test'
19
- require File.expand_path('../dummyapp/config/environment', __FILE__)
20
- require 'rspec/rails'
21
- require 'database_cleaner'
22
-
23
- begin
24
- require 'webmock/rspec'
25
- WebMock.disable_net_connect!(:allow => 'codeclimate.com')
26
- rescue LoadError
27
- end
28
-
29
- namespace :dummy do
30
- load 'spec/dummyapp/Rakefile'
31
- end
32
-
33
- if ENV['TRAVIS_JDK_VERSION'] == 'oraclejdk7'
34
- require 'rollbar/configuration'
35
- Rollbar::Configuration::DEFAULT_ENDPOINT = 'https://api-alt.rollbar.com/api/1/item/'
36
- end
37
-
38
- if Gem::Version.new(Rails.version) < Gem::Version.new('5.0')
39
- Rake::Task['dummy:db:setup'].invoke
40
- else
41
- Rake::Task['dummy:db:test:prepare'].invoke
42
- end
43
-
44
-
45
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
46
-
47
- RSpec.configure do |config|
48
- config.extend(Helpers)
49
- config.include(NotifierHelpers)
50
- config.include(FixtureHelpers)
51
- config.include(EncodingHelpers)
52
-
53
- config.color = true
54
- config.formatter = 'documentation'
55
-
56
- config.use_transactional_fixtures = true
57
- config.order = 'random'
58
- config.expect_with(:rspec) do |c|
59
- c.syntax = [:should, :expect]
60
- end
61
-
62
- config.mock_with :rspec do |mocks|
63
- mocks.syntax = [:should, :expect]
64
- end
65
-
66
- config.before(:suite) do
67
- DatabaseCleaner.strategy = :truncation
68
- end
69
-
70
- config.before(:each) do
71
- DatabaseCleaner.start
72
- DatabaseCleaner.clean
73
- Rollbar.clear_notifier!
74
-
75
- stub_request(:any, /api.rollbar.com/).to_rack(RollbarAPI.new) if defined?(WebMock)
76
- end
77
-
78
- config.after do
79
- DatabaseCleaner.clean
80
- end
81
-
82
- config.infer_spec_type_from_file_location! if config.respond_to?(:infer_spec_type_from_file_location!)
83
- config.backtrace_exclusion_patterns = [/gems\/rspec-.*/]
84
- end
@@ -1 +0,0 @@
1
- class CauseException < StandardError; end
@@ -1,8 +0,0 @@
1
- module EncodingHelpers
2
- def force_to_ascii(string)
3
- return string unless string.respond_to?('force_encoding')
4
-
5
- string.force_encoding('ASCII-8BIT')
6
- string
7
- end
8
- end
@@ -1 +0,0 @@
1
- ����������
@@ -1,10 +0,0 @@
1
- module FixtureHelpers
2
- def fixture_file(relative_path)
3
- root = File.expand_path('../../fixtures', __FILE__)
4
- File.join(root, relative_path)
5
- end
6
-
7
- def load_payload_fixture(relative_path)
8
- Rollbar::JSON.load(File.read(fixture_file(relative_path)))
9
- end
10
- end
@@ -1,7 +0,0 @@
1
- class GetIpRaising
2
- class IpSpoofAttackError < StandardError; end
3
-
4
- def to_s
5
- raise IpSpoofAttackError, 'spoofing IP!'
6
- end
7
- end
@@ -1,5 +0,0 @@
1
- module Helpers
2
- def local?
3
- ENV['LOCAL'] == '1'
4
- end
5
- end
@@ -1,23 +0,0 @@
1
- RSpec::Matchers.define :be_eql_hash_with_regexes do |expected|
2
- def check_value(actual_value, expected_value)
3
- if expected_value.is_a?(Hash)
4
- expected_value.all? { |k, _| check_value(actual_value[k], expected_value[k]) }
5
- elsif expected_value.is_a?(Array)
6
- expected_value.each_with_index.map do |v, i|
7
- check_value(actual_value[i], v)
8
- end.all?
9
- elsif expected_value.is_a?(Regexp)
10
- actual_value.match(expected_value)
11
- else
12
- actual_value == expected_value
13
- end
14
- end
15
-
16
- match do |actual|
17
- expected.all? do |key, expected_value|
18
- actual_value = actual[key]
19
-
20
- check_value(actual_value, expected_value)
21
- end
22
- end
23
- end
@@ -1,57 +0,0 @@
1
- module NotifierHelpers
2
- def reconfigure_notifier
3
- Rollbar.clear_notifier!
4
-
5
- Rollbar.reconfigure do |config|
6
- # special test access token
7
- config.access_token = test_access_token
8
- config.logger = ::Rails.logger
9
- config.root = ::Rails.root
10
- config.framework = "Rails: #{::Rails::VERSION::STRING}"
11
- config.open_timeout = 60
12
- config.request_timeout = 60
13
- end
14
- end
15
-
16
- def preconfigure_rails_notifier
17
- rails_logger = if defined?(::Rails.logger)
18
- ::Rails.logger
19
- elsif defined?(RAILS_DEFAULT_LOGGER)
20
- RAILS_DEFAULT_LOGGER
21
- end
22
-
23
- Rollbar.preconfigure do |config|
24
- config.logger = rails_logger
25
- config.environment = defined?(::Rails.env) && ::Rails.env || defined?(RAILS_ENV) && RAILS_ENV
26
- config.root = defined?(::Rails.root) && ::Rails.root || defined?(RAILS_ROOT) && RAILS_ROOT
27
- config.framework = defined?(::Rails.version) && "Rails: #{::Rails.version}" || defined?(::Rails::VERSION::STRING) && "Rails: #{::Rails::VERSION::STRING}"
28
- end
29
- end
30
-
31
- def test_access_token
32
- 'bfec94a1ede64984b862880224edd0ed'
33
- end
34
-
35
- def reset_configuration
36
- Rollbar.reconfigure do |config|
37
- end
38
- end
39
-
40
- def clear_proxy_env_vars
41
- env_vars = {}
42
- proxy_env_vars.each do |var|
43
- env_vars[var] = ENV.delete(var)
44
- end
45
- env_vars
46
- end
47
-
48
- def restore_proxy_env_vars(env_vars)
49
- proxy_env_vars.each do |var|
50
- ENV[var] = env_vars[var]
51
- end
52
- end
53
-
54
- def proxy_env_vars
55
- %w[http_proxy HTTP_PROXY https_proxy HTTPS_PROXY]
56
- end
57
- end
@@ -1,57 +0,0 @@
1
- require 'rack/request'
2
-
3
- class RollbarAPI
4
- def call(env)
5
- request = Rack::Request.new(env)
6
- json = JSON.parse(request.body.read)
7
-
8
- return bad_request(json) unless access_token?(json)
9
-
10
- success(json)
11
- end
12
-
13
- private
14
-
15
- def response_headers
16
- {
17
- 'Content-Type' => 'application/json'
18
- }
19
- end
20
-
21
- def access_token?(json)
22
-
23
- !!json['access_token']
24
- end
25
-
26
- def bad_request(json)
27
- # We don't have for now any test doing bad requests
28
- # so raise here in order to detect that scenario
29
- raise
30
-
31
-
32
- [400, response_headers, [bad_request_body]]
33
- end
34
-
35
- def success(json)
36
- [200, response_headers, [success_body(json)]]
37
- end
38
-
39
- def bad_request_body
40
- result(1, nil, 'bad request')
41
- end
42
-
43
- def success_body(json)
44
- result(0, {
45
- :id => rand(1_000_000),
46
- :uuid => json['data']['uuid']
47
- }, nil)
48
- end
49
-
50
- def result(err, body, message)
51
- {
52
- :err => err,
53
- :result => body,
54
- :message => message
55
- }.to_json
56
- end
57
- end
@@ -1,12 +0,0 @@
1
- shared_context 'reconfigure notifier', :reconfigure_notifier => true do
2
- before { reconfigure_notifier }
3
- end
4
-
5
- shared_context 'payload from fixture', :fixture => :payload do
6
- let(:payload) do
7
- {
8
- 'data' => load_payload_fixture(payload_fixture),
9
- 'access_token' => 'the-token'
10
- }
11
- end
12
- end