dfg-airbrake 5.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/lib/airbrake.rb +57 -0
  3. data/lib/airbrake/capistrano/tasks.rb +65 -0
  4. data/lib/airbrake/delayed_job/plugin1.rb +52 -0
  5. data/lib/airbrake/rack/middleware.rb +59 -0
  6. data/lib/airbrake/rack/notice_builder.rb +125 -0
  7. data/lib/airbrake/rack/user.rb +61 -0
  8. data/lib/airbrake/rails/action_controller.rb +37 -0
  9. data/lib/airbrake/rails/active_job.rb +35 -0
  10. data/lib/airbrake/rails/active_record.rb +36 -0
  11. data/lib/airbrake/rails/railtie.rb +79 -0
  12. data/lib/airbrake/rake/task_ext.rb +66 -0
  13. data/lib/airbrake/rake/tasks.rb +118 -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 +6 -0
  17. data/lib/generators/airbrake_generator.rb +25 -0
  18. data/lib/generators/airbrake_initializer.rb.erb +68 -0
  19. data/spec/airbrake_spec.rb +17 -0
  20. data/spec/apps/rack/dummy_app.rb +17 -0
  21. data/spec/apps/rails/dummy_app.rb +156 -0
  22. data/spec/apps/rails/dummy_task.rake +20 -0
  23. data/spec/apps/sinatra/composite_app/sinatra_app1.rb +11 -0
  24. data/spec/apps/sinatra/composite_app/sinatra_app2.rb +11 -0
  25. data/spec/apps/sinatra/dummy_app.rb +12 -0
  26. data/spec/integration/rack/rack_spec.rb +17 -0
  27. data/spec/integration/rails/rails_spec.rb +216 -0
  28. data/spec/integration/rails/rake_spec.rb +160 -0
  29. data/spec/integration/shared_examples/rack_examples.rb +126 -0
  30. data/spec/integration/sinatra/sinatra_spec.rb +77 -0
  31. data/spec/spec_helper.rb +116 -0
  32. data/spec/unit/rack/middleware_spec.rb +136 -0
  33. data/spec/unit/rack/notice_builder_spec.rb +157 -0
  34. data/spec/unit/rack/user_spec.rb +172 -0
  35. data/spec/unit/rake/tasks_spec.rb +67 -0
  36. data/spec/unit/sidekiq/error_handler_spec.rb +33 -0
  37. metadata +247 -0
@@ -0,0 +1,67 @@
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)].each do |(key, val)|
36
+ include_examples 'deploy payload', key, val
37
+ end
38
+ end
39
+
40
+ describe "airbrake:install_heroku_deploy_hook" do
41
+ let(:task) { Rake::Task['airbrake:install_heroku_deploy_hook'] }
42
+
43
+ after { task.reenable }
44
+
45
+ let(:airbrake_vars) { "AIRBRAKE_PROJECT_ID=1\nAIRBRAKE_API_KEY=2\nRAILS_ENV=3\n" }
46
+ let(:silenced_stdout) { File.new(File::NULL, 'w') }
47
+
48
+ before do
49
+ @original_stdout = $stdout
50
+ $stdout = silenced_stdout
51
+ end
52
+
53
+ after do
54
+ $stdout.close
55
+ $stdout = @original_stdout
56
+ end
57
+
58
+ describe "parsing environment variables" do
59
+ it "does not raise when an env variable value contains '='" do
60
+ heroku_config = airbrake_vars + "URL=https://airbrake.io/docs?key=11\n"
61
+ expect(Bundler).to receive(:with_clean_env).twice.and_return(heroku_config)
62
+
63
+ task.invoke
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
4
+ require 'sidekiq'
5
+ require 'sidekiq/cli'
6
+ require 'airbrake/sidekiq/error_handler'
7
+
8
+ RSpec.describe "airbrake/sidekiq/error_handler" do
9
+ let(:endpoint) do
10
+ 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
11
+ end
12
+
13
+ def wait_for_a_request_with_body(body)
14
+ wait_for(a_request(:post, endpoint).with(body: body)).to have_been_made.once
15
+ end
16
+
17
+ before do
18
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
19
+ end
20
+
21
+ it "sends a notice to Airbrake" do
22
+ handler = Sidekiq.error_handlers.last
23
+ handler.call(
24
+ AirbrakeTestError.new('sidekiq error'),
25
+ 'class' => 'HardSidekiqWorker', 'args' => %w(bango bongo)
26
+ )
27
+
28
+ wait_for_a_request_with_body(/"message":"sidekiq\serror"/)
29
+ wait_for_a_request_with_body(/"params":{.*"args":\["bango","bongo"\]/)
30
+ wait_for_a_request_with_body(/"component":"sidekiq","action":"HardSidekiqWorker"/)
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,247 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dfg-airbrake
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.6.2
5
+ platform: ruby
6
+ authors:
7
+ - Airbrake Technologies, Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: airbrake-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-wait
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: appraisal
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rack
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.2.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.2.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: rack-test
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: sidekiq
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '4'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
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.
164
+ email: support@airbrake.io
165
+ executables: []
166
+ extensions: []
167
+ extra_rdoc_files: []
168
+ files:
169
+ - lib/airbrake.rb
170
+ - lib/airbrake/capistrano/tasks.rb
171
+ - lib/airbrake/delayed_job/plugin1.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
183
+ - lib/airbrake/version.rb
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/sinatra/composite_app/sinatra_app1.rb
191
+ - spec/apps/sinatra/composite_app/sinatra_app2.rb
192
+ - spec/apps/sinatra/dummy_app.rb
193
+ - spec/integration/rack/rack_spec.rb
194
+ - spec/integration/rails/rails_spec.rb
195
+ - spec/integration/rails/rake_spec.rb
196
+ - spec/integration/shared_examples/rack_examples.rb
197
+ - spec/integration/sinatra/sinatra_spec.rb
198
+ - spec/spec_helper.rb
199
+ - spec/unit/rack/middleware_spec.rb
200
+ - spec/unit/rack/notice_builder_spec.rb
201
+ - spec/unit/rack/user_spec.rb
202
+ - spec/unit/rake/tasks_spec.rb
203
+ - spec/unit/sidekiq/error_handler_spec.rb
204
+ homepage: https://airbrake.io
205
+ licenses:
206
+ - MIT
207
+ metadata: {}
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ requirements: []
223
+ rubyforge_project:
224
+ rubygems_version: 2.5.1
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: Airbrake is an online tool that provides robust exception tracking in any
228
+ of your Ruby applications.
229
+ test_files:
230
+ - spec/airbrake_spec.rb
231
+ - spec/apps/rack/dummy_app.rb
232
+ - spec/apps/rails/dummy_app.rb
233
+ - spec/apps/rails/dummy_task.rake
234
+ - spec/apps/sinatra/composite_app/sinatra_app1.rb
235
+ - spec/apps/sinatra/composite_app/sinatra_app2.rb
236
+ - spec/apps/sinatra/dummy_app.rb
237
+ - spec/integration/rack/rack_spec.rb
238
+ - spec/integration/rails/rails_spec.rb
239
+ - spec/integration/rails/rake_spec.rb
240
+ - spec/integration/shared_examples/rack_examples.rb
241
+ - spec/integration/sinatra/sinatra_spec.rb
242
+ - spec/spec_helper.rb
243
+ - spec/unit/rack/middleware_spec.rb
244
+ - spec/unit/rack/notice_builder_spec.rb
245
+ - spec/unit/rack/user_spec.rb
246
+ - spec/unit/rake/tasks_spec.rb
247
+ - spec/unit/sidekiq/error_handler_spec.rb