airbrake 4.3.8 → 5.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/lib/airbrake.rb +16 -185
  3. data/lib/airbrake/capistrano/tasks.rb +64 -0
  4. data/lib/airbrake/delayed_job/plugin.rb +48 -0
  5. data/lib/airbrake/rack/middleware.rb +45 -0
  6. data/lib/airbrake/rack/notice_builder.rb +80 -0
  7. data/lib/airbrake/rack/user.rb +51 -0
  8. data/lib/airbrake/rails/action_controller.rb +35 -0
  9. data/lib/airbrake/rails/active_job.rb +23 -0
  10. data/lib/airbrake/rails/active_record.rb +40 -0
  11. data/lib/airbrake/rails/railtie.rb +61 -0
  12. data/lib/airbrake/rake/task_ext.rb +61 -0
  13. data/lib/airbrake/rake/tasks.rb +93 -0
  14. data/lib/airbrake/resque/failure.rb +19 -0
  15. data/lib/airbrake/sidekiq/error_handler.rb +35 -0
  16. data/lib/airbrake/version.rb +4 -1
  17. data/lib/generators/airbrake_generator.rb +25 -0
  18. data/lib/generators/airbrake_initializer.rb.erb +55 -0
  19. data/spec/airbrake_spec.rb +0 -0
  20. data/spec/apps/rack/dummy_app.rb +17 -0
  21. data/spec/apps/rails/dummy_app.rb +150 -0
  22. data/spec/apps/rails/dummy_task.rake +20 -0
  23. data/spec/apps/rails/logs/32.log +13358 -0
  24. data/spec/apps/rails/logs/40.log +6854 -0
  25. data/spec/apps/rails/logs/41.log +3170 -0
  26. data/spec/apps/rails/logs/42.log +23919 -0
  27. data/spec/apps/rails/logs/50.log +10976 -0
  28. data/spec/apps/sinatra/dummy_app.rb +12 -0
  29. data/spec/integration/rack/rack_spec.rb +17 -0
  30. data/spec/integration/rails/rails_spec.rb +135 -0
  31. data/spec/integration/rails/rake_spec.rb +160 -0
  32. data/spec/integration/shared_examples/rack_examples.rb +106 -0
  33. data/spec/integration/sinatra/sinatra_spec.rb +15 -0
  34. data/spec/spec_helper.rb +127 -0
  35. data/spec/unit/rack/middleware_spec.rb +80 -0
  36. data/spec/unit/rack/notice_builder_spec.rb +35 -0
  37. data/spec/unit/rack/user_spec.rb +78 -0
  38. data/spec/unit/rake/tasks_spec.rb +40 -0
  39. data/spec/unit/sidekiq/error_handler_spec.rb +29 -0
  40. metadata +110 -325
  41. data/CHANGELOG +0 -1716
  42. data/Gemfile +0 -3
  43. data/Guardfile +0 -6
  44. data/INSTALL +0 -20
  45. data/LICENSE +0 -61
  46. data/README.md +0 -148
  47. data/README_FOR_HEROKU_ADDON.md +0 -102
  48. data/Rakefile +0 -179
  49. data/TESTED_AGAINST +0 -7
  50. data/airbrake.gemspec +0 -41
  51. data/bin/airbrake +0 -12
  52. data/features/metal.feature +0 -34
  53. data/features/rack.feature +0 -60
  54. data/features/rails.feature +0 -324
  55. data/features/rake.feature +0 -33
  56. data/features/sinatra.feature +0 -126
  57. data/features/step_definitions/file_steps.rb +0 -14
  58. data/features/step_definitions/rack_steps.rb +0 -27
  59. data/features/step_definitions/rails_application_steps.rb +0 -267
  60. data/features/step_definitions/rake_steps.rb +0 -22
  61. data/features/support/airbrake_shim.rb.template +0 -11
  62. data/features/support/aruba.rb +0 -5
  63. data/features/support/env.rb +0 -39
  64. data/features/support/matchers.rb +0 -35
  65. data/features/support/rails.rb +0 -156
  66. data/features/support/rake/Rakefile +0 -77
  67. data/features/user_informer.feature +0 -57
  68. data/generators/airbrake/airbrake_generator.rb +0 -94
  69. data/generators/airbrake/lib/insert_commands.rb +0 -34
  70. data/generators/airbrake/lib/rake_commands.rb +0 -24
  71. data/generators/airbrake/templates/airbrake_tasks.rake +0 -25
  72. data/generators/airbrake/templates/capistrano_hook.rb +0 -6
  73. data/generators/airbrake/templates/initializer.rb +0 -4
  74. data/install.rb +0 -1
  75. data/lib/airbrake/backtrace.rb +0 -103
  76. data/lib/airbrake/capistrano.rb +0 -103
  77. data/lib/airbrake/capistrano3.rb +0 -3
  78. data/lib/airbrake/cli/client.rb +0 -76
  79. data/lib/airbrake/cli/options.rb +0 -45
  80. data/lib/airbrake/cli/printer.rb +0 -33
  81. data/lib/airbrake/cli/project.rb +0 -17
  82. data/lib/airbrake/cli/project_factory.rb +0 -33
  83. data/lib/airbrake/cli/runner.rb +0 -49
  84. data/lib/airbrake/cli/validator.rb +0 -8
  85. data/lib/airbrake/configuration.rb +0 -366
  86. data/lib/airbrake/jobs/send_job.rb +0 -7
  87. data/lib/airbrake/notice.rb +0 -411
  88. data/lib/airbrake/rack.rb +0 -64
  89. data/lib/airbrake/rails.rb +0 -45
  90. data/lib/airbrake/rails/action_controller_catcher.rb +0 -32
  91. data/lib/airbrake/rails/controller_methods.rb +0 -146
  92. data/lib/airbrake/rails/error_lookup.rb +0 -35
  93. data/lib/airbrake/rails/middleware.rb +0 -63
  94. data/lib/airbrake/rails3_tasks.rb +0 -126
  95. data/lib/airbrake/railtie.rb +0 -46
  96. data/lib/airbrake/rake_handler.rb +0 -75
  97. data/lib/airbrake/response.rb +0 -29
  98. data/lib/airbrake/sender.rb +0 -213
  99. data/lib/airbrake/shared_tasks.rb +0 -59
  100. data/lib/airbrake/sidekiq.rb +0 -8
  101. data/lib/airbrake/sinatra.rb +0 -40
  102. data/lib/airbrake/tasks.rb +0 -81
  103. data/lib/airbrake/tasks/airbrake.cap +0 -28
  104. data/lib/airbrake/user_informer.rb +0 -36
  105. data/lib/airbrake/utils/params_cleaner.rb +0 -141
  106. data/lib/airbrake/utils/rack_filters.rb +0 -45
  107. data/lib/airbrake_tasks.rb +0 -62
  108. data/lib/rails/generators/airbrake/airbrake_generator.rb +0 -155
  109. data/lib/templates/rescue.erb +0 -91
  110. data/rails/init.rb +0 -1
  111. data/resources/README.md +0 -34
  112. data/resources/airbrake_2_4.xsd +0 -89
  113. data/resources/airbrake_3_0.json +0 -52
  114. data/resources/ca-bundle.crt +0 -3376
  115. data/script/integration_test.rb +0 -35
  116. data/test/airbrake_tasks_test.rb +0 -161
  117. data/test/backtrace_test.rb +0 -215
  118. data/test/capistrano_test.rb +0 -44
  119. data/test/configuration_test.rb +0 -303
  120. data/test/controller_methods_test.rb +0 -230
  121. data/test/helper.rb +0 -233
  122. data/test/integration.rb +0 -13
  123. data/test/integration/catcher_test.rb +0 -371
  124. data/test/logger_test.rb +0 -79
  125. data/test/notice_test.rb +0 -494
  126. data/test/notifier_test.rb +0 -288
  127. data/test/params_cleaner_test.rb +0 -204
  128. data/test/rack_test.rb +0 -62
  129. data/test/rails_initializer_test.rb +0 -36
  130. data/test/recursion_test.rb +0 -10
  131. data/test/response_test.rb +0 -18
  132. data/test/sender_test.rb +0 -335
  133. data/test/support/response_shim.xml +0 -4
  134. data/test/user_informer_test.rb +0 -29
@@ -0,0 +1,127 @@
1
+ # Gems from the gemspec.
2
+ require 'webmock'
3
+ require 'webmock/rspec'
4
+ require 'rspec/wait'
5
+ require 'pry'
6
+ require 'rack'
7
+ require 'rack/test'
8
+ require 'rake'
9
+
10
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
11
+ require 'sidekiq'
12
+ require 'sidekiq/cli'
13
+ end
14
+
15
+ require 'airbrake'
16
+ require 'airbrake/rake/tasks'
17
+
18
+ # Load integration tests only when they're run through appraisals.
19
+ if ENV['APPRAISAL_INITIALIZED']
20
+ # Gems from appraisals that every application uses.
21
+ require 'warden'
22
+
23
+ # Load a Rails app or skip.
24
+ begin
25
+ ENV['RAILS_ENV'] = 'test'
26
+
27
+ if RUBY_ENGINE == 'jruby'
28
+ require 'activerecord-jdbcsqlite3-adapter'
29
+ else
30
+ require 'sqlite3'
31
+ end
32
+
33
+ require 'rails'
34
+
35
+ rails_vsn = Gem::Version.new(Rails.version)
36
+
37
+ if rails_vsn <= Gem::Version.new('4.2')
38
+ ENV['DATABASE_URL'] = 'sqlite3:///:memory:'
39
+ else
40
+ ENV['DATABASE_URL'] = 'sqlite3::memory:'
41
+ end
42
+
43
+ require 'action_controller'
44
+ require 'action_view'
45
+ require 'action_view/testing/resolvers'
46
+ require 'active_record/railtie'
47
+ if rails_vsn >= Gem::Version.new('4.2')
48
+ require 'active_job'
49
+
50
+ # Silence logger.
51
+ ActiveJob::Base.logger.level = 99
52
+ end
53
+
54
+ require 'resque'
55
+ require 'resque_spec'
56
+ require 'airbrake/resque/failure'
57
+ Resque::Failure.backend = Resque::Failure::Airbrake
58
+
59
+ require 'delayed_job'
60
+ require 'delayed_job_active_record'
61
+ require 'airbrake/delayed_job/plugin'
62
+ Delayed::Worker.delay_jobs = false
63
+
64
+ require 'airbrake/rails/railtie'
65
+
66
+ load 'apps/rails/dummy_task.rake'
67
+ require 'apps/rails/dummy_app'
68
+ rescue LoadError
69
+ puts '** Skipped Rails specs'
70
+ end
71
+
72
+ # Load a Sinatra app or skip.
73
+ begin
74
+ # Resque depends on Sinatra, so when we launch Rails specs, we also
75
+ # accidentally load Sinatra.
76
+ raise LoadError if defined?(Resque)
77
+
78
+ require 'sinatra'
79
+ require 'apps/sinatra/dummy_app'
80
+ rescue LoadError
81
+ puts '** Skipped Sinatra specs'
82
+ end
83
+
84
+ # Load a Rack app or skip.
85
+ begin
86
+ require 'apps/rack/dummy_app'
87
+ rescue LoadError
88
+ puts '** Skipped Rack specs'
89
+ end
90
+ end
91
+
92
+ RSpec.configure do |c|
93
+ c.order = 'random'
94
+ c.color = true
95
+ c.disable_monkey_patching!
96
+ c.wait_timeout = 3
97
+
98
+ c.include Rack::Test::Methods
99
+ end
100
+
101
+ Airbrake.configure do |c|
102
+ c.project_id = 113743
103
+ c.project_key = 'fd04e13d806a90f96614ad8e529b2822'
104
+ c.logger = Logger.new('/dev/null')
105
+ c.app_version = '1.2.3'
106
+ c.workers = 5
107
+ end
108
+
109
+ # Make sure tests that use async requests fail.
110
+ Thread.abort_on_exception = true
111
+
112
+ AirbrakeTestError = Class.new(StandardError)
113
+
114
+ # Print header with versions information. This simplifies debugging of build
115
+ # failures on CircleCI.
116
+ versions = <<EOS
117
+ #{'#' * 80}
118
+ # RUBY_VERSION: #{RUBY_VERSION}
119
+ # RUBY_ENGINE: #{RUBY_ENGINE}
120
+ EOS
121
+ versions << "# JRUBY_VERSION #{JRUBY_VERSION}\n" if defined?(JRUBY_VERSION)
122
+ versions << "# Rails version: #{Rails.version}\n" if defined?(Rails)
123
+ versions << "# Sinatra version: #{Sinatra::VERSION}\n" if defined?(Sinatra)
124
+ versions << "# Rack release: #{Rack.release}\n"
125
+ versions << '#' * 80
126
+
127
+ puts versions
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Airbrake::Rack::Middleware do
4
+ let(:app) do
5
+ proc { |env| [200, env, 'Bingo bango content'] }
6
+ end
7
+
8
+ let(:faulty_app) do
9
+ proc { raise AirbrakeTestError }
10
+ end
11
+
12
+ let(:endpoint) do
13
+ 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
14
+ end
15
+
16
+ let(:middleware) { described_class.new(app) }
17
+
18
+ def env_for(url, opts = {})
19
+ Rack::MockRequest.env_for(url, opts)
20
+ end
21
+
22
+ def wait_for_a_request_with_body(body)
23
+ wait_for(a_request(:post, endpoint).with(body: body)).to have_been_made.once
24
+ end
25
+
26
+ before do
27
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
28
+ end
29
+
30
+ describe "#call" do
31
+ context "when app raises an exception" do
32
+ it "rescues the exception, notifies Airbrake & re-raises it" do
33
+ expect { described_class.new(faulty_app).call(env_for('/')) }.
34
+ to raise_error(AirbrakeTestError)
35
+
36
+ wait_for_a_request_with_body(/"errors":\[{"type":"AirbrakeTestError"/)
37
+ end
38
+
39
+ it "sends framework version and name" do
40
+ expect { described_class.new(faulty_app).call(env_for('/bingo/bango')) }.
41
+ to raise_error(AirbrakeTestError)
42
+
43
+ wait_for_a_request_with_body(
44
+ %r("context":{.*"version":"1.2.3 (Rails|Sinatra|Rack\.version)/.+".+})
45
+ )
46
+ end
47
+ end
48
+
49
+ context "when app doesn't raise" do
50
+ context "and previous middleware stored an exception in env" do
51
+ shared_examples 'stored exception' do |type|
52
+ it "notifies on #{type}, but doesn't raise" do
53
+ env = env_for('/').merge(type => AirbrakeTestError.new)
54
+ described_class.new(app).call(env)
55
+
56
+ wait_for_a_request_with_body(/"errors":\[{"type":"AirbrakeTestError"/)
57
+ end
58
+ end
59
+
60
+ ['action_dispatch.exception', 'sinatra.error'].each do |type|
61
+ include_examples 'stored exception', type
62
+ end
63
+ end
64
+
65
+ it "doesn't notify Airbrake" do
66
+ described_class.new(app).call(env_for('/'))
67
+ sleep 1
68
+ expect(a_request(:post, endpoint)).not_to have_been_made
69
+ end
70
+ end
71
+
72
+ it "returns a response" do
73
+ response = described_class.new(app).call(env_for('/'))
74
+
75
+ expect(response[0]).to eq(200)
76
+ expect(response[1]).to be_a(Hash)
77
+ expect(response[2]).to eq('Bingo bango content')
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Airbrake::Rack::NoticeBuilder do
4
+ describe "#build_notice" do
5
+ it "doesn't overwrite session with nil" do
6
+ notice_builder = described_class.new('rack.session' => nil)
7
+ notice = notice_builder.build_notice(AirbrakeTestError.new)
8
+
9
+ expect(notice[:session]).to eq({})
10
+ end
11
+
12
+ it "sets session if it is present" do
13
+ session = { a: 1, b: 2 }
14
+ notice_builder = described_class.new('rack.session' => session)
15
+ notice = notice_builder.build_notice(AirbrakeTestError.new)
16
+
17
+ expect(notice[:session]).to eq(session)
18
+ end
19
+
20
+ it "doesn't overwrite params with nil" do
21
+ notice_builder = described_class.new('action_dispatch.request.parameters' => nil)
22
+ notice = notice_builder.build_notice(AirbrakeTestError.new)
23
+
24
+ expect(notice[:session]).to eq({})
25
+ end
26
+
27
+ it "sets params if they're present" do
28
+ params = { a: 1, b: 2 }
29
+ notice_builder = described_class.new('action_dispatch.request.parameters' => params)
30
+ notice = notice_builder.build_notice(AirbrakeTestError.new)
31
+
32
+ expect(notice[:params]).to eq(params)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Airbrake::Rack::User do
4
+ let(:faulty_app) do
5
+ proc { raise AirbrakeTestError }
6
+ end
7
+
8
+ let(:endpoint) do
9
+ 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
10
+ end
11
+
12
+ let(:user) do
13
+ OpenStruct.new(
14
+ id: 1,
15
+ email: 'qa@example.com',
16
+ username: 'qa-dept',
17
+ first_name: 'Bingo',
18
+ last_name: 'Bongo'
19
+ )
20
+ end
21
+
22
+ def env_for(url, opts = {})
23
+ Rack::MockRequest.env_for(url, opts)
24
+ end
25
+
26
+ before do
27
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
28
+ end
29
+
30
+ describe ".extract" do
31
+ context "when the Warden authentication framework is present" do
32
+ it "returns the user" do
33
+ warden = instance_double('Warden::Proxy')
34
+ allow(warden).to receive(:user) { user }
35
+
36
+ retval = described_class.extract(env_for('/', 'warden' => warden))
37
+ expect(retval).to be_a(described_class)
38
+ end
39
+ end
40
+
41
+ context "when the Warden authentication framework is absent" do
42
+ it "returns nil" do
43
+ retval = described_class.extract(env_for('/'))
44
+ expect(retval).to be_nil
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "#to_hash" do
50
+ context "when Rack user contains all expect fields" do
51
+ let(:rack_user) { described_class.new(user).to_hash[:user] }
52
+
53
+ it "contains the 'id' key" do
54
+ expect(rack_user.to_hash).to include(:id)
55
+ end
56
+
57
+ it "contains the 'name' key" do
58
+ expect(rack_user.to_hash).to include(:name)
59
+ end
60
+
61
+ it "contains the 'username' key" do
62
+ expect(rack_user.to_hash).to include(:username)
63
+ end
64
+
65
+ it "contains the 'email' key" do
66
+ expect(rack_user.to_hash).to include(:email)
67
+ end
68
+ end
69
+
70
+ context "when Rack user doesn't contain any of the expect fields" do
71
+ let(:rack_user) { described_class.new(OpenStruct.new) }
72
+
73
+ it "is empty" do
74
+ expect(rack_user.to_hash).to be_empty
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "airbrake/rake/tasks" do
4
+ let(:endpoint) do
5
+ 'https://airbrake.io/api/v4/projects/113743/deploys?key=fd04e13d806a90f96614ad8e529b2822'
6
+ end
7
+
8
+ def wait_for_a_request_with_body(body)
9
+ wait_for(a_request(:post, endpoint).with(body: body)).to have_been_made.once
10
+ end
11
+
12
+ before do
13
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
14
+ end
15
+
16
+ describe "airbrake:deploy" do
17
+ let(:task) { Rake::Task['airbrake:deploy'] }
18
+
19
+ after { task.reenable }
20
+
21
+ shared_examples 'deploy payload' do |key, val|
22
+ it "sends #{key}" do
23
+ ENV[key.upcase] = val
24
+ task.invoke
25
+
26
+ wait_for_a_request_with_body(/{.*"#{key}":"#{val}".*}/)
27
+ ENV[key.upcase] = nil
28
+ end
29
+ end
30
+
31
+ [%w(environment production),
32
+ %w(username john),
33
+ %w(revision 123abcdef),
34
+ %w(repository https://github.com/airbrake/airbrake'),
35
+ %w(version v2.0)
36
+ ].each do |(key, val)|
37
+ include_examples 'deploy payload', key, val
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
4
+ RSpec.describe "airbrake/sidekiq/error_handler" do
5
+ let(:endpoint) do
6
+ 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
7
+ end
8
+
9
+ def wait_for_a_request_with_body(body)
10
+ wait_for(a_request(:post, endpoint).with(body: body)).to have_been_made.once
11
+ end
12
+
13
+ before do
14
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
15
+ end
16
+
17
+ it "sends a notice to Airbrake" do
18
+ handler = Sidekiq.error_handlers.last
19
+ handler.call(
20
+ AirbrakeTestError.new('sidekiq error'),
21
+ 'class' => 'HardSidekiqWorker', 'args' => %w(bango bongo)
22
+ )
23
+
24
+ wait_for_a_request_with_body(/"message":"sidekiq\serror"/)
25
+ wait_for_a_request_with_body(/"params":{.*"args":\["bango","bongo"\]/)
26
+ wait_for_a_request_with_body(/"component":"sidekiq","action":"HardSidekiqWorker"/)
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,413 +1,210 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.8
4
+ version: 5.0.0.rc.1
5
5
  platform: ruby
6
6
  authors:
7
- - Airbrake
7
+ - Airbrake Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-24 00:00:00.000000000 Z
11
+ date: 2015-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: builder
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: multi_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bourne
14
+ name: airbrake-ruby
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - "~>"
46
18
  - !ruby/object:Gem::Version
47
- version: 1.4.0
48
- type: :development
19
+ version: 1.0.0.rc.1
20
+ type: :runtime
49
21
  prerelease: false
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
24
  - - "~>"
53
25
  - !ruby/object:Gem::Version
54
- version: 1.4.0
26
+ version: 1.0.0.rc.1
55
27
  - !ruby/object:Gem::Dependency
56
- name: cucumber-rails
28
+ name: rspec
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: 1.1.1
33
+ version: '3'
62
34
  type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: 1.1.1
40
+ version: '3'
69
41
  - !ruby/object:Gem::Dependency
70
- name: fakeweb
42
+ name: rspec-wait
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: 1.3.0
47
+ version: '0'
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: 1.3.0
54
+ version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
- name: nokogiri
56
+ name: rake
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: 1.5.0
61
+ version: '10'
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: 1.5.0
68
+ version: '10'
97
69
  - !ruby/object:Gem::Dependency
98
- name: rspec
70
+ name: pry
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: 2.6.0
75
+ version: '0'
104
76
  type: :development
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: 2.6.0
82
+ version: '0'
111
83
  - !ruby/object:Gem::Dependency
112
- name: sham_rack
84
+ name: appraisal
113
85
  requirement: !ruby/object:Gem::Requirement
114
86
  requirements:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
- version: 1.3.0
89
+ version: '2'
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
93
  requirements:
122
94
  - - "~>"
123
95
  - !ruby/object:Gem::Version
124
- version: 1.3.0
96
+ version: '2'
125
97
  - !ruby/object:Gem::Dependency
126
- name: json-schema
98
+ name: rack
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
101
  - - "~>"
130
102
  - !ruby/object:Gem::Version
131
- version: 1.0.12
103
+ version: '1'
132
104
  type: :development
133
105
  prerelease: false
134
106
  version_requirements: !ruby/object:Gem::Requirement
135
107
  requirements:
136
108
  - - "~>"
137
109
  - !ruby/object:Gem::Version
138
- version: 1.0.12
110
+ version: '1'
139
111
  - !ruby/object:Gem::Dependency
140
- name: capistrano
112
+ name: webmock
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
115
  - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: '2.0'
117
+ version: '1'
146
118
  type: :development
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: '2.0'
153
- - !ruby/object:Gem::Dependency
154
- name: aruba
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: appraisal
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
124
+ version: '1'
181
125
  - !ruby/object:Gem::Dependency
182
- name: rspec-rails
126
+ name: rack-test
183
127
  requirement: !ruby/object:Gem::Requirement
184
128
  requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: girl_friday
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: sucker_punch
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - '='
214
- - !ruby/object:Gem::Version
215
- version: 1.0.2
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - '='
221
- - !ruby/object:Gem::Version
222
- version: 1.0.2
223
- - !ruby/object:Gem::Dependency
224
- name: shoulda-matchers
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
- - !ruby/object:Gem::Dependency
238
- name: shoulda-context
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ">="
242
- - !ruby/object:Gem::Version
243
- version: '0'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: '0'
251
- - !ruby/object:Gem::Dependency
252
- name: pry
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - ">="
256
- - !ruby/object:Gem::Version
257
- version: '0'
258
- type: :development
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - ">="
263
- - !ruby/object:Gem::Version
264
- version: '0'
265
- - !ruby/object:Gem::Dependency
266
- name: coveralls
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - ">="
129
+ - - "~>"
270
130
  - !ruby/object:Gem::Version
271
131
  version: '0'
272
132
  type: :development
273
133
  prerelease: false
274
134
  version_requirements: !ruby/object:Gem::Requirement
275
135
  requirements:
276
- - - ">="
136
+ - - "~>"
277
137
  - !ruby/object:Gem::Version
278
138
  version: '0'
279
139
  - !ruby/object:Gem::Dependency
280
- name: minitest
140
+ name: sidekiq
281
141
  requirement: !ruby/object:Gem::Requirement
282
142
  requirements:
283
143
  - - "~>"
284
144
  - !ruby/object:Gem::Version
285
- version: '4.0'
145
+ version: '4'
286
146
  type: :development
287
147
  prerelease: false
288
148
  version_requirements: !ruby/object:Gem::Requirement
289
149
  requirements:
290
150
  - - "~>"
291
151
  - !ruby/object:Gem::Version
292
- version: '4.0'
293
- - !ruby/object:Gem::Dependency
294
- name: test-unit
295
- requirement: !ruby/object:Gem::Requirement
296
- requirements:
297
- - - ">="
298
- - !ruby/object:Gem::Version
299
- version: '0'
300
- type: :development
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- - - ">="
305
- - !ruby/object:Gem::Version
306
- version: '0'
307
- description:
152
+ version: '4'
153
+ description: |
154
+ Airbrake is an online tool that provides robust exception tracking in any of
155
+ your Ruby applications. In doing so, it allows you to easily review errors, tie
156
+ an error to an individual piece of code, and trace the cause back to recent
157
+ changes. The Airbrake dashboard provides easy categorization, searching, and
158
+ prioritization of exceptions so that when errors occur, your team can quickly
159
+ determine the root cause.
160
+
161
+ Additionally, this gem includes integrations with such popular libraries and
162
+ frameworks as Rails, Sinatra, Resque, Sidekiq, Delayed Job, ActiveJob and many
163
+ more.
308
164
  email: support@airbrake.io
309
- executables:
310
- - airbrake
165
+ executables: []
311
166
  extensions: []
312
167
  extra_rdoc_files: []
313
168
  files:
314
- - CHANGELOG
315
- - Gemfile
316
- - Guardfile
317
- - INSTALL
318
- - LICENSE
319
- - README.md
320
- - README_FOR_HEROKU_ADDON.md
321
- - Rakefile
322
- - TESTED_AGAINST
323
- - airbrake.gemspec
324
- - bin/airbrake
325
- - features/metal.feature
326
- - features/rack.feature
327
- - features/rails.feature
328
- - features/rake.feature
329
- - features/sinatra.feature
330
- - features/step_definitions/file_steps.rb
331
- - features/step_definitions/rack_steps.rb
332
- - features/step_definitions/rails_application_steps.rb
333
- - features/step_definitions/rake_steps.rb
334
- - features/support/airbrake_shim.rb.template
335
- - features/support/aruba.rb
336
- - features/support/env.rb
337
- - features/support/matchers.rb
338
- - features/support/rails.rb
339
- - features/support/rake/Rakefile
340
- - features/user_informer.feature
341
- - generators/airbrake/airbrake_generator.rb
342
- - generators/airbrake/lib/insert_commands.rb
343
- - generators/airbrake/lib/rake_commands.rb
344
- - generators/airbrake/templates/airbrake_tasks.rake
345
- - generators/airbrake/templates/capistrano_hook.rb
346
- - generators/airbrake/templates/initializer.rb
347
- - install.rb
348
169
  - lib/airbrake.rb
349
- - lib/airbrake/backtrace.rb
350
- - lib/airbrake/capistrano.rb
351
- - lib/airbrake/capistrano3.rb
352
- - lib/airbrake/cli/client.rb
353
- - lib/airbrake/cli/options.rb
354
- - lib/airbrake/cli/printer.rb
355
- - lib/airbrake/cli/project.rb
356
- - lib/airbrake/cli/project_factory.rb
357
- - lib/airbrake/cli/runner.rb
358
- - lib/airbrake/cli/validator.rb
359
- - lib/airbrake/configuration.rb
360
- - lib/airbrake/jobs/send_job.rb
361
- - lib/airbrake/notice.rb
362
- - lib/airbrake/rack.rb
363
- - lib/airbrake/rails.rb
364
- - lib/airbrake/rails/action_controller_catcher.rb
365
- - lib/airbrake/rails/controller_methods.rb
366
- - lib/airbrake/rails/error_lookup.rb
367
- - lib/airbrake/rails/middleware.rb
368
- - lib/airbrake/rails3_tasks.rb
369
- - lib/airbrake/railtie.rb
370
- - lib/airbrake/rake_handler.rb
371
- - lib/airbrake/response.rb
372
- - lib/airbrake/sender.rb
373
- - lib/airbrake/shared_tasks.rb
374
- - lib/airbrake/sidekiq.rb
375
- - lib/airbrake/sinatra.rb
376
- - lib/airbrake/tasks.rb
377
- - lib/airbrake/tasks/airbrake.cap
378
- - lib/airbrake/user_informer.rb
379
- - lib/airbrake/utils/params_cleaner.rb
380
- - lib/airbrake/utils/rack_filters.rb
170
+ - lib/airbrake/capistrano/tasks.rb
171
+ - lib/airbrake/delayed_job/plugin.rb
172
+ - lib/airbrake/rack/middleware.rb
173
+ - lib/airbrake/rack/notice_builder.rb
174
+ - lib/airbrake/rack/user.rb
175
+ - lib/airbrake/rails/action_controller.rb
176
+ - lib/airbrake/rails/active_job.rb
177
+ - lib/airbrake/rails/active_record.rb
178
+ - lib/airbrake/rails/railtie.rb
179
+ - lib/airbrake/rake/task_ext.rb
180
+ - lib/airbrake/rake/tasks.rb
181
+ - lib/airbrake/resque/failure.rb
182
+ - lib/airbrake/sidekiq/error_handler.rb
381
183
  - lib/airbrake/version.rb
382
- - lib/airbrake_tasks.rb
383
- - lib/rails/generators/airbrake/airbrake_generator.rb
384
- - lib/templates/rescue.erb
385
- - rails/init.rb
386
- - resources/README.md
387
- - resources/airbrake_2_4.xsd
388
- - resources/airbrake_3_0.json
389
- - resources/ca-bundle.crt
390
- - script/integration_test.rb
391
- - test/airbrake_tasks_test.rb
392
- - test/backtrace_test.rb
393
- - test/capistrano_test.rb
394
- - test/configuration_test.rb
395
- - test/controller_methods_test.rb
396
- - test/helper.rb
397
- - test/integration.rb
398
- - test/integration/catcher_test.rb
399
- - test/logger_test.rb
400
- - test/notice_test.rb
401
- - test/notifier_test.rb
402
- - test/params_cleaner_test.rb
403
- - test/rack_test.rb
404
- - test/rails_initializer_test.rb
405
- - test/recursion_test.rb
406
- - test/response_test.rb
407
- - test/sender_test.rb
408
- - test/support/response_shim.xml
409
- - test/user_informer_test.rb
410
- homepage: http://www.airbrake.io
184
+ - lib/generators/airbrake_generator.rb
185
+ - lib/generators/airbrake_initializer.rb.erb
186
+ - spec/airbrake_spec.rb
187
+ - spec/apps/rack/dummy_app.rb
188
+ - spec/apps/rails/dummy_app.rb
189
+ - spec/apps/rails/dummy_task.rake
190
+ - spec/apps/rails/logs/32.log
191
+ - spec/apps/rails/logs/40.log
192
+ - spec/apps/rails/logs/41.log
193
+ - spec/apps/rails/logs/42.log
194
+ - spec/apps/rails/logs/50.log
195
+ - spec/apps/sinatra/dummy_app.rb
196
+ - spec/integration/rack/rack_spec.rb
197
+ - spec/integration/rails/rails_spec.rb
198
+ - spec/integration/rails/rake_spec.rb
199
+ - spec/integration/shared_examples/rack_examples.rb
200
+ - spec/integration/sinatra/sinatra_spec.rb
201
+ - spec/spec_helper.rb
202
+ - spec/unit/rack/middleware_spec.rb
203
+ - spec/unit/rack/notice_builder_spec.rb
204
+ - spec/unit/rack/user_spec.rb
205
+ - spec/unit/rake/tasks_spec.rb
206
+ - spec/unit/sidekiq/error_handler_spec.rb
207
+ homepage: https://airbrake.io
411
208
  licenses:
412
209
  - MIT
413
210
  metadata: {}
@@ -422,48 +219,36 @@ required_ruby_version: !ruby/object:Gem::Requirement
422
219
  version: '0'
423
220
  required_rubygems_version: !ruby/object:Gem::Requirement
424
221
  requirements:
425
- - - ">="
222
+ - - ">"
426
223
  - !ruby/object:Gem::Version
427
- version: '0'
224
+ version: 1.3.1
428
225
  requirements: []
429
226
  rubyforge_project:
430
- rubygems_version: 2.5.1
227
+ rubygems_version: 2.4.5
431
228
  signing_key:
432
229
  specification_version: 4
433
- summary: Send your application errors to our hosted service and reclaim your inbox.
230
+ summary: Airbrake is an online tool that provides robust exception tracking in any
231
+ of your Ruby applications.
434
232
  test_files:
435
- - test/airbrake_tasks_test.rb
436
- - test/backtrace_test.rb
437
- - test/capistrano_test.rb
438
- - test/configuration_test.rb
439
- - test/controller_methods_test.rb
440
- - test/helper.rb
441
- - test/integration/catcher_test.rb
442
- - test/integration.rb
443
- - test/logger_test.rb
444
- - test/notice_test.rb
445
- - test/notifier_test.rb
446
- - test/params_cleaner_test.rb
447
- - test/rack_test.rb
448
- - test/rails_initializer_test.rb
449
- - test/recursion_test.rb
450
- - test/response_test.rb
451
- - test/sender_test.rb
452
- - test/support/response_shim.xml
453
- - test/user_informer_test.rb
454
- - features/metal.feature
455
- - features/rack.feature
456
- - features/rails.feature
457
- - features/rake.feature
458
- - features/sinatra.feature
459
- - features/step_definitions/file_steps.rb
460
- - features/step_definitions/rack_steps.rb
461
- - features/step_definitions/rails_application_steps.rb
462
- - features/step_definitions/rake_steps.rb
463
- - features/support/airbrake_shim.rb.template
464
- - features/support/aruba.rb
465
- - features/support/env.rb
466
- - features/support/matchers.rb
467
- - features/support/rails.rb
468
- - features/support/rake/Rakefile
469
- - features/user_informer.feature
233
+ - spec/integration/rack/rack_spec.rb
234
+ - spec/integration/sinatra/sinatra_spec.rb
235
+ - spec/integration/rails/rails_spec.rb
236
+ - spec/integration/rails/rake_spec.rb
237
+ - spec/integration/shared_examples/rack_examples.rb
238
+ - spec/spec_helper.rb
239
+ - spec/apps/rack/dummy_app.rb
240
+ - spec/apps/sinatra/dummy_app.rb
241
+ - spec/apps/rails/logs/40.log
242
+ - spec/apps/rails/logs/42.log
243
+ - spec/apps/rails/logs/50.log
244
+ - spec/apps/rails/logs/32.log
245
+ - spec/apps/rails/logs/41.log
246
+ - spec/apps/rails/dummy_app.rb
247
+ - spec/apps/rails/dummy_task.rake
248
+ - spec/airbrake_spec.rb
249
+ - spec/unit/rack/middleware_spec.rb
250
+ - spec/unit/rack/user_spec.rb
251
+ - spec/unit/rack/notice_builder_spec.rb
252
+ - spec/unit/sidekiq/error_handler_spec.rb
253
+ - spec/unit/rake/tasks_spec.rb
254
+ has_rdoc: