honeybadger 5.29.1 → 6.0.6

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +69 -0
  3. data/lib/honeybadger/agent.rb +36 -35
  4. data/lib/honeybadger/backend/base.rb +11 -11
  5. data/lib/honeybadger/backend/debug.rb +4 -4
  6. data/lib/honeybadger/backend/null.rb +2 -2
  7. data/lib/honeybadger/backend/server.rb +11 -11
  8. data/lib/honeybadger/backend/test.rb +2 -2
  9. data/lib/honeybadger/backend.rb +6 -6
  10. data/lib/honeybadger/backtrace.rb +27 -22
  11. data/lib/honeybadger/breadcrumbs/active_support.rb +9 -9
  12. data/lib/honeybadger/breadcrumbs/breadcrumb.rb +1 -2
  13. data/lib/honeybadger/breadcrumbs/collector.rb +4 -4
  14. data/lib/honeybadger/breadcrumbs/logging.rb +11 -14
  15. data/lib/honeybadger/breadcrumbs.rb +3 -3
  16. data/lib/honeybadger/cli/deploy.rb +7 -7
  17. data/lib/honeybadger/cli/exec.rb +41 -41
  18. data/lib/honeybadger/cli/helpers.rb +18 -18
  19. data/lib/honeybadger/cli/heroku.rb +36 -36
  20. data/lib/honeybadger/cli/install.rb +44 -44
  21. data/lib/honeybadger/cli/main.rb +107 -107
  22. data/lib/honeybadger/cli/notify.rb +13 -13
  23. data/lib/honeybadger/cli/test.rb +109 -94
  24. data/lib/honeybadger/cli.rb +3 -3
  25. data/lib/honeybadger/config/defaults.rb +224 -218
  26. data/lib/honeybadger/config/env.rb +5 -5
  27. data/lib/honeybadger/config/ruby.rb +19 -19
  28. data/lib/honeybadger/config/yaml.rb +12 -12
  29. data/lib/honeybadger/config.rb +76 -78
  30. data/lib/honeybadger/const.rb +4 -4
  31. data/lib/honeybadger/context_manager.rb +16 -16
  32. data/lib/honeybadger/conversions.rb +9 -6
  33. data/lib/honeybadger/counter.rb +4 -4
  34. data/lib/honeybadger/event.rb +3 -3
  35. data/lib/honeybadger/events_worker.rb +34 -33
  36. data/lib/honeybadger/gauge.rb +2 -2
  37. data/lib/honeybadger/histogram.rb +4 -4
  38. data/lib/honeybadger/init/hanami.rb +5 -5
  39. data/lib/honeybadger/init/rails.rb +14 -14
  40. data/lib/honeybadger/init/rake.rb +19 -21
  41. data/lib/honeybadger/init/ruby.rb +4 -4
  42. data/lib/honeybadger/init/sinatra.rb +11 -12
  43. data/lib/honeybadger/instrumentation.rb +26 -31
  44. data/lib/honeybadger/instrumentation_helper.rb +11 -12
  45. data/lib/honeybadger/karafka.rb +55 -56
  46. data/lib/honeybadger/logging.rb +22 -21
  47. data/lib/honeybadger/metric.rb +2 -2
  48. data/lib/honeybadger/metrics_worker.rb +12 -10
  49. data/lib/honeybadger/notice.rb +55 -58
  50. data/lib/honeybadger/notification_subscriber.rb +32 -19
  51. data/lib/honeybadger/plugin.rb +16 -18
  52. data/lib/honeybadger/plugins/active_job.rb +11 -9
  53. data/lib/honeybadger/plugins/autotuner.rb +5 -5
  54. data/lib/honeybadger/plugins/breadcrumbs.rb +7 -7
  55. data/lib/honeybadger/plugins/delayed_job/plugin.rb +36 -37
  56. data/lib/honeybadger/plugins/delayed_job.rb +4 -4
  57. data/lib/honeybadger/plugins/faktory.rb +10 -10
  58. data/lib/honeybadger/plugins/karafka.rb +3 -3
  59. data/lib/honeybadger/plugins/lambda.rb +9 -11
  60. data/lib/honeybadger/plugins/local_variables.rb +4 -4
  61. data/lib/honeybadger/plugins/net_http.rb +10 -10
  62. data/lib/honeybadger/plugins/passenger.rb +4 -4
  63. data/lib/honeybadger/plugins/rails.rb +13 -9
  64. data/lib/honeybadger/plugins/resque.rb +7 -7
  65. data/lib/honeybadger/plugins/shoryuken.rb +6 -6
  66. data/lib/honeybadger/plugins/sidekiq.rb +74 -60
  67. data/lib/honeybadger/plugins/solid_queue.rb +3 -3
  68. data/lib/honeybadger/plugins/sucker_punch.rb +5 -5
  69. data/lib/honeybadger/plugins/system.rb +3 -3
  70. data/lib/honeybadger/plugins/thor.rb +5 -5
  71. data/lib/honeybadger/plugins/warden.rb +4 -4
  72. data/lib/honeybadger/rack/error_notifier.rb +14 -14
  73. data/lib/honeybadger/rack/user_feedback.rb +11 -12
  74. data/lib/honeybadger/rack/user_informer.rb +6 -6
  75. data/lib/honeybadger/registry.rb +2 -2
  76. data/lib/honeybadger/registry_execution.rb +1 -1
  77. data/lib/honeybadger/ruby.rb +2 -2
  78. data/lib/honeybadger/singleton.rb +49 -48
  79. data/lib/honeybadger/tasks.rb +3 -3
  80. data/lib/honeybadger/timer.rb +1 -1
  81. data/lib/honeybadger/util/http.rb +27 -27
  82. data/lib/honeybadger/util/request_hash.rb +11 -11
  83. data/lib/honeybadger/util/request_payload.rb +2 -2
  84. data/lib/honeybadger/util/revision.rb +14 -6
  85. data/lib/honeybadger/util/sanitizer.rb +22 -22
  86. data/lib/honeybadger/util/stats.rb +6 -3
  87. data/lib/honeybadger/version.rb +1 -1
  88. data/lib/honeybadger/worker.rb +31 -29
  89. data/lib/honeybadger.rb +5 -5
  90. data/lib/puma/plugin/honeybadger.rb +12 -8
  91. metadata +3 -3
@@ -1,4 +1,5 @@
1
- require 'honeybadger/conversions'
1
+ require "honeybadger/conversions"
2
+ require "monitor"
2
3
 
3
4
  module Honeybadger
4
5
  # @api private
@@ -10,7 +11,7 @@ module Honeybadger
10
11
  end
11
12
 
12
13
  def initialize
13
- @mutex = Mutex.new
14
+ @monitor = Monitor.new
14
15
  _initialize
15
16
  end
16
17
 
@@ -20,10 +21,9 @@ module Honeybadger
20
21
 
21
22
  # Internal helpers
22
23
 
23
-
24
24
  def set_context(hash, &block)
25
25
  local = block_given?
26
- @mutex.synchronize do
26
+ @monitor.synchronize do
27
27
  @global_context ||= {}
28
28
  @local_context ||= []
29
29
 
@@ -40,13 +40,13 @@ module Honeybadger
40
40
  begin
41
41
  yield
42
42
  ensure
43
- @mutex.synchronize { @local_context&.pop }
43
+ @monitor.synchronize { @local_context&.pop }
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
48
  def get_context
49
- @mutex.synchronize do
49
+ @monitor.synchronize do
50
50
  return @global_context unless @local_context
51
51
 
52
52
  @global_context.merge(@local_context.inject({}, :merge))
@@ -54,7 +54,7 @@ module Honeybadger
54
54
  end
55
55
 
56
56
  def clear_context
57
- @mutex.synchronize do
57
+ @monitor.synchronize do
58
58
  @global_context = nil
59
59
  @local_context = nil
60
60
  end
@@ -62,7 +62,7 @@ module Honeybadger
62
62
 
63
63
  def set_event_context(hash, &block)
64
64
  local = block_given?
65
- @mutex.synchronize do
65
+ @monitor.synchronize do
66
66
  @global_event_context ||= {}
67
67
  @local_event_context ||= []
68
68
 
@@ -79,13 +79,13 @@ module Honeybadger
79
79
  begin
80
80
  yield
81
81
  ensure
82
- @mutex.synchronize { @local_event_context&.pop }
82
+ @monitor.synchronize { @local_event_context&.pop }
83
83
  end
84
84
  end
85
85
  end
86
86
 
87
87
  def get_event_context
88
- @mutex.synchronize do
88
+ @monitor.synchronize do
89
89
  return @global_event_context unless @local_event_context
90
90
 
91
91
  @global_event_context.merge(@local_event_context.inject({}, :merge))
@@ -93,26 +93,26 @@ module Honeybadger
93
93
  end
94
94
 
95
95
  def clear_event_context
96
- @mutex.synchronize do
96
+ @monitor.synchronize do
97
97
  @global_event_context = nil
98
98
  @local_event_context = nil
99
99
  end
100
100
  end
101
101
 
102
102
  def set_rack_env(env)
103
- @mutex.synchronize { @rack_env = env }
103
+ @monitor.synchronize { @rack_env = env }
104
104
  end
105
105
 
106
106
  def get_rack_env
107
- @mutex.synchronize { @rack_env }
107
+ @monitor.synchronize { @rack_env }
108
108
  end
109
109
 
110
110
  def set_request_id(request_id)
111
- @mutex.synchronize { @request_id = request_id }
111
+ @monitor.synchronize { @request_id = request_id }
112
112
  end
113
113
 
114
114
  def get_request_id
115
- @mutex.synchronize { @request_id }
115
+ @monitor.synchronize { @request_id }
116
116
  end
117
117
 
118
118
  private
@@ -120,7 +120,7 @@ module Honeybadger
120
120
  attr_accessor :custom, :rack_env, :request_id
121
121
 
122
122
  def _initialize
123
- @mutex.synchronize do
123
+ @monitor.synchronize do
124
124
  @global_context = nil
125
125
  @local_context = nil
126
126
  @global_event_context = nil
@@ -2,6 +2,7 @@ module Honeybadger
2
2
  # @api private
3
3
  module Conversions
4
4
  module_function
5
+
5
6
  MAX_CONTEXT_DEPTH = 5
6
7
 
7
8
  # Convert context into a Hash.
@@ -12,13 +13,15 @@ module Honeybadger
12
13
  def Context(object, depth = 1)
13
14
  object = object.to_honeybadger_context if object.respond_to?(:to_honeybadger_context)
14
15
  object = Hash(object)
15
- object = object.transform_values do |value|
16
- if value&.respond_to?(:to_honeybadger_context)
17
- Context(value, depth + 1)
18
- else
19
- value
16
+ if depth < MAX_CONTEXT_DEPTH
17
+ object = object.transform_values do |value|
18
+ if value&.respond_to?(:to_honeybadger_context)
19
+ Context(value, depth + 1)
20
+ else
21
+ value
22
+ end
20
23
  end
21
- end if depth < MAX_CONTEXT_DEPTH
24
+ end
22
25
  object
23
26
  end
24
27
  end
@@ -1,18 +1,18 @@
1
- require 'honeybadger/metric'
1
+ require "honeybadger/metric"
2
2
 
3
3
  module Honeybadger
4
4
  class Counter < Metric
5
- def count(by=1)
5
+ def count(by = 1)
6
6
  return unless by
7
7
 
8
8
  @samples += 1
9
9
 
10
10
  @counter ||= 0
11
- @counter = @counter + by
11
+ @counter += by
12
12
  end
13
13
 
14
14
  def payloads
15
- [{ counter: @counter }]
15
+ [{counter: @counter}]
16
16
  end
17
17
  end
18
18
  end
@@ -1,6 +1,6 @@
1
- require 'forwardable'
1
+ require "forwardable"
2
2
 
3
- require 'honeybadger/util/sanitizer'
3
+ require "honeybadger/util/sanitizer"
4
4
 
5
5
  module Honeybadger
6
6
  class Event
@@ -18,7 +18,7 @@ module Honeybadger
18
18
  def_delegators :payload, :dig, :[], :[]=, :delete
19
19
 
20
20
  # @api private
21
- def initialize(event_type_or_payload, payload={})
21
+ def initialize(event_type_or_payload, payload = {})
22
22
  if event_type_or_payload.is_a?(String)
23
23
  @event_type = event_type_or_payload
24
24
  @payload = payload
@@ -1,7 +1,7 @@
1
- require 'forwardable'
2
- require 'net/http'
1
+ require "forwardable"
2
+ require "net/http"
3
3
 
4
- require 'honeybadger/logging'
4
+ require "honeybadger/logging"
5
5
 
6
6
  module Honeybadger
7
7
  # A concurrent queue to notify the backend.
@@ -58,7 +58,7 @@ module Honeybadger
58
58
  end
59
59
 
60
60
  def shutdown(force = false)
61
- d { 'shutting down events worker' }
61
+ d { "shutting down events worker" }
62
62
 
63
63
  mutex.synchronize do
64
64
  @shutdown = true
@@ -68,11 +68,11 @@ module Honeybadger
68
68
  return true unless thread&.alive?
69
69
 
70
70
  if throttled?
71
- warn { sprintf('Unable to send %s event(s) to Honeybadger (currently throttled)', queue.size) } unless queue.empty?
71
+ warn { sprintf("Unable to send %s event(s) to Honeybadger (currently throttled)", queue.size) } unless queue.empty?
72
72
  return true
73
73
  end
74
74
 
75
- info { sprintf('Waiting to send %s events(s) to Honeybadger', queue.size) } unless queue.empty?
75
+ info { sprintf("Waiting to send %s events(s) to Honeybadger", queue.size) } unless queue.empty?
76
76
  queue.push(FLUSH)
77
77
  queue.push(SHUTDOWN)
78
78
  !!thread.join
@@ -84,7 +84,7 @@ module Honeybadger
84
84
  # Blocks until queue is processed up to this point in time.
85
85
  def flush
86
86
  mutex.synchronize do
87
- if thread && thread.alive?
87
+ if thread&.alive?
88
88
  queue.push(FLUSH)
89
89
  queue.push(marker)
90
90
  marker.wait(mutex)
@@ -135,7 +135,7 @@ module Honeybadger
135
135
  end
136
136
 
137
137
  def kill!
138
- d { 'killing worker thread' }
138
+ d { "killing worker thread" }
139
139
 
140
140
  if thread
141
141
  Thread.kill(thread)
@@ -165,7 +165,7 @@ module Honeybadger
165
165
 
166
166
  def run
167
167
  begin
168
- d { 'worker started' }
168
+ d { "worker started" }
169
169
  mutex.synchronize do
170
170
  @last_sent = Time.now
171
171
  end
@@ -179,9 +179,9 @@ module Honeybadger
179
179
  end
180
180
  end
181
181
  ensure
182
- d { 'stopping worker' }
182
+ d { "stopping worker" }
183
183
  end
184
- rescue Exception => e
184
+ rescue => e
185
185
  error {
186
186
  msg = "Error in worker thread (shutting down) class=%s message=%s\n\t%s"
187
187
  sprintf(msg, e.class, e.message.dump, Array(e.backtrace).join("\n\t"))
@@ -208,10 +208,10 @@ module Honeybadger
208
208
  send_now(mutex.synchronize { send_queue })
209
209
  mutex.synchronize do
210
210
  @last_sent = Time.now
211
- debug { sprintf('Sending %s events', send_queue.length) }
211
+ debug { sprintf("Sending %s events", send_queue.length) }
212
212
  send_queue.clear
213
213
  if @dropped_events > 0
214
- warn { sprintf('Dropped %s messages due to exceeding max queue size of %s', @dropped_events, config.events_max_queue_size) }
214
+ warn { sprintf("Dropped %s messages due to exceeding max queue size of %s", @dropped_events, config.events_max_queue_size) }
215
215
  end
216
216
  @dropped_events = 0
217
217
  end
@@ -227,7 +227,7 @@ module Honeybadger
227
227
  def flush_send_queue
228
228
  return if mutex.synchronize { send_queue.empty? }
229
229
  send_batch
230
- rescue StandardError => e
230
+ rescue => e
231
231
  error {
232
232
  msg = "Error in worker thread class=%s message=%s\n\t%s"
233
233
  sprintf(msg, e.class, e.message.dump, Array(e.backtrace).join("\n\t"))
@@ -239,28 +239,26 @@ module Honeybadger
239
239
  check_and_send
240
240
 
241
241
  if shutdown? && throttled?
242
- warn { sprintf('Unable to send %s events(s) to Honeybadger (currently throttled)', queue.size) } if queue.size > 1
242
+ warn { sprintf("Unable to send %s events(s) to Honeybadger (currently throttled)", queue.size) } if queue.size > 1
243
243
  kill!
244
244
  return
245
245
  end
246
246
 
247
247
  sleep(throttle_interval)
248
- rescue StandardError => e
248
+ rescue => e
249
249
  error {
250
250
  msg = "Error in worker thread class=%s message=%s\n\t%s"
251
251
  sprintf(msg, e.class, e.message.dump, Array(e.backtrace).join("\n\t"))
252
252
  }
253
253
  end
254
254
 
255
-
256
255
  def send_to_backend(msg)
257
- d { 'events_worker sending to backend' }
258
- response = backend.event(msg)
259
- response
256
+ d { "events_worker sending to backend" }
257
+ backend.event(msg)
260
258
  end
261
259
 
262
260
  def calc_throttle_interval
263
- ((BASE_THROTTLE ** throttle) - 1).round(3)
261
+ ((BASE_THROTTLE**throttle) - 1).round(3)
264
262
  end
265
263
 
266
264
  def inc_throttle
@@ -281,32 +279,33 @@ module Honeybadger
281
279
  end
282
280
 
283
281
  def handle_response(response)
284
- d { sprintf('events_worker response code=%s message=%s', response.code, response.message.to_s.dump) }
282
+ d { sprintf("events_worker response code=%s message=%s", response.code, response.message.to_s.dump) }
285
283
 
286
284
  case response.code
287
285
  when 429, 503
288
286
  throttle = inc_throttle
289
- warn { sprintf('Event send failed: project is sending too many events. code=%s throttle=%s interval=%s', response.code, throttle, throttle_interval) }
287
+ debug { sprintf("Insights Event send failed: project is sending too many events. code=%s throttle=%s interval=%s", response.code, throttle, throttle_interval) }
288
+ suspend(3600)
290
289
  when 402
291
- warn { sprintf('Event send failed: payment is required. code=%s', response.code) }
290
+ warn { sprintf("Insights Event send failed: payment is required. code=%s", response.code) }
292
291
  suspend(3600)
293
292
  when 403
294
- warn { sprintf('Event send failed: API key is invalid. code=%s', response.code) }
293
+ warn { sprintf("Insights Event send failed: API key is invalid. code=%s", response.code) }
295
294
  suspend(3600)
296
295
  when 413
297
- warn { sprintf('Event send failed: Payload is too large. code=%s', response.code) }
296
+ warn { sprintf("Insights Event send failed: Payload is too large. code=%s", response.code) }
298
297
  when 201
299
- if throttle = dec_throttle
300
- debug { sprintf('Success ⚡ Event sent code=%s throttle=%s interval=%s', response.code, throttle, throttle_interval) }
298
+ if (throttle = dec_throttle)
299
+ debug { sprintf("Success ⚡ Insights Event sent code=%s throttle=%s interval=%s", response.code, throttle, throttle_interval) }
301
300
  else
302
- debug { sprintf('Success ⚡ Event sent code=%s', response.code) }
301
+ debug { sprintf("Success ⚡ Insights Event sent code=%s", response.code) }
303
302
  end
304
303
  when :stubbed
305
- info { sprintf('Success ⚡ Development mode is enabled; This event will be sent after app is deployed.') }
304
+ info { "Success ⚡ Development mode is enabled; This event will be sent after app is deployed." }
306
305
  when :error
307
- warn { sprintf('Event send failed: an unknown error occurred. code=%s error=%s', response.code, response.message.to_s.dump) }
306
+ warn { sprintf("Insights Event send failed: an unknown error occurred. code=%s error=%s", response.code, response.message.to_s.dump) }
308
307
  else
309
- warn { sprintf('Event send failed: unknown response from server. code=%s', response.code) }
308
+ warn { sprintf("Insights Event send failed: unknown response from server. code=%s", response.code) }
310
309
  end
311
310
  end
312
311
 
@@ -317,8 +316,10 @@ module Honeybadger
317
316
  end
318
317
 
319
318
  def signal_marker(marker)
320
- mutex.synchronize do
319
+ if mutex.owned?
321
320
  marker.signal
321
+ else
322
+ mutex.synchronize { marker.signal }
322
323
  end
323
324
  end
324
325
  end
@@ -1,4 +1,4 @@
1
- require 'honeybadger/metric'
1
+ require "honeybadger/metric"
2
2
 
3
3
  module Honeybadger
4
4
  class Gauge < Metric
@@ -8,7 +8,7 @@ module Honeybadger
8
8
  @samples += 1
9
9
 
10
10
  @total ||= 0
11
- @total = @total + value
11
+ @total += value
12
12
 
13
13
  @min = value if @min.nil? || @min > value
14
14
  @max = value if @max.nil? || @max < value
@@ -1,9 +1,9 @@
1
- require 'honeybadger/metric'
1
+ require "honeybadger/metric"
2
2
 
3
3
  module Honeybadger
4
4
  class Histogram < Metric
5
5
  DEFAULT_BINS = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0]
6
- INFINITY = 1e20.to_f # not quite, but pretty much
6
+ INFINITY = 1e20 # not quite, but pretty much
7
7
 
8
8
  def record(value)
9
9
  return unless value
@@ -11,7 +11,7 @@ module Honeybadger
11
11
  @samples += 1
12
12
 
13
13
  @total ||= 0
14
- @total = @total + value
14
+ @total += value
15
15
 
16
16
  @min = value if @min.nil? || @min > value
17
17
  @max = value if @max.nil? || @max < value
@@ -23,7 +23,7 @@ module Honeybadger
23
23
  end
24
24
 
25
25
  def find_bin(value)
26
- bin = bins.find {|b| b >= value }
26
+ bin = bins.find { |b| b >= value }
27
27
  bin = INFINITY if bin.nil?
28
28
  bin
29
29
  end
@@ -1,14 +1,14 @@
1
- require 'honeybadger/ruby'
1
+ require "honeybadger/ruby"
2
2
 
3
3
  Honeybadger.init!({
4
- :framework => :hanami,
5
- :env => ENV['HANAMI_ENV'] || ENV['RACK_ENV'],
6
- :'logging.path' => 'STDOUT'
4
+ framework: :hanami,
5
+ env: ENV["HANAMI_ENV"] || ENV["RACK_ENV"],
6
+ "logging.path": "STDOUT"
7
7
  })
8
8
 
9
9
  Honeybadger.load_plugins!
10
10
 
11
- if Hanami::VERSION >= '2.0' && Honeybadger.config[:'exceptions.enabled']
11
+ if Hanami::VERSION >= "2.0" && Honeybadger.config[:"exceptions.enabled"]
12
12
  Hanami.app.instance_eval do
13
13
  config.middleware.use Honeybadger::Rack::UserFeedback
14
14
  config.middleware.use Honeybadger::Rack::UserInformer
@@ -1,33 +1,33 @@
1
- require 'rails'
2
- require 'yaml'
1
+ require "rails"
2
+ require "yaml"
3
3
 
4
- require 'honeybadger/ruby'
4
+ require "honeybadger/ruby"
5
5
 
6
6
  module Honeybadger
7
7
  module Init
8
8
  module Rails
9
9
  class Railtie < ::Rails::Railtie
10
10
  rake_tasks do
11
- load 'honeybadger/tasks.rb'
11
+ load "honeybadger/tasks.rb"
12
12
  end
13
13
 
14
- initializer 'honeybadger.install_middleware' do |app|
14
+ initializer "honeybadger.install_middleware" do |app|
15
15
  honeybadger_config = Honeybadger::Agent.instance.config
16
16
 
17
- if honeybadger_config[:'exceptions.enabled']
17
+ if honeybadger_config[:"exceptions.enabled"]
18
18
  app.config.middleware.insert(0, Honeybadger::Rack::ErrorNotifier)
19
- app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserInformer) if honeybadger_config[:'user_informer.enabled']
20
- app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserFeedback) if honeybadger_config[:'feedback.enabled']
19
+ app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserInformer) if honeybadger_config[:"user_informer.enabled"]
20
+ app.config.middleware.insert_before(Honeybadger::Rack::ErrorNotifier, Honeybadger::Rack::UserFeedback) if honeybadger_config[:"feedback.enabled"]
21
21
  end
22
22
  end
23
23
 
24
24
  config.before_initialize do
25
25
  Honeybadger.init!({
26
- :root => ::Rails.root.to_s,
27
- :env => ::Rails.env,
28
- :'config.path' => ::Rails.root.join('config', 'honeybadger.yml'),
29
- :logger => Logging::FormattedLogger.new(::Rails.logger),
30
- :framework => :rails
26
+ root: ::Rails.root.to_s,
27
+ env: ::Rails.env,
28
+ "config.path": ::Rails.root.join("config", "honeybadger.yml"),
29
+ logger: Logging::FormattedLogger.new(::Rails.logger),
30
+ framework: :rails
31
31
  })
32
32
  end
33
33
 
@@ -36,7 +36,7 @@ module Honeybadger
36
36
  end
37
37
 
38
38
  console do
39
- unless Honeybadger::Agent.instance.config[:'insights.enabled'] = Honeybadger::Agent.instance.config[:'insights.console.enabled']
39
+ unless (Honeybadger::Agent.instance.config[:"insights.enabled"] = Honeybadger::Agent.instance.config[:"insights.console.enabled"])
40
40
  Honeybadger::Agent.instance.config.logger.debug("Rails console detected, shutting down Honeybadger Insights workers.")
41
41
  Honeybadger::Agent.instance.stop_insights
42
42
  end
@@ -1,4 +1,4 @@
1
- require 'honeybadger/ruby'
1
+ require "honeybadger/ruby"
2
2
 
3
3
  module Honeybadger
4
4
  # @api private
@@ -6,7 +6,7 @@ module Honeybadger
6
6
  module RakeHandler
7
7
  def self.included(klass)
8
8
  klass.class_eval do
9
- include Rake087Methods unless defined?(Rake::VERSION) && Rake::VERSION >= '0.9.0'
9
+ include Rake087Methods unless defined?(Rake::VERSION) && Rake::VERSION >= "0.9.0"
10
10
  alias_method :display_error_message_without_honeybadger, :display_error_message
11
11
  alias_method :display_error_message, :display_error_message_with_honeybadger
12
12
  end
@@ -20,7 +20,7 @@ module Honeybadger
20
20
  end
21
21
 
22
22
  def reconstruct_command_line
23
- "rake #{ARGV.join( ' ' )}"
23
+ "rake #{ARGV.join(" ")}"
24
24
  end
25
25
 
26
26
  # This module brings Rake 0.8.7 error handling to 0.9.0 standards
@@ -29,30 +29,28 @@ module Honeybadger
29
29
  #
30
30
  # Provide standard exception handling for the given block.
31
31
  def standard_exception_handling
32
- begin
33
- yield
34
- rescue SystemExit => ex
35
- # Exit silently with current status
36
- raise
37
- rescue OptionParser::InvalidOption => ex
38
- $stderr.puts ex.message
39
- exit(false)
40
- rescue Exception => ex
41
- # Exit with error message
42
- display_error_message(ex)
43
- exit(false)
44
- end
32
+ yield
33
+ rescue SystemExit
34
+ # Exit silently with current status
35
+ raise
36
+ rescue OptionParser::InvalidOption => ex
37
+ warn ex.message
38
+ exit(false)
39
+ rescue => ex
40
+ # Exit with error message
41
+ display_error_message(ex)
42
+ exit(false)
45
43
  end
46
44
 
47
45
  # Method extracted from Rake 0.8.7 source
48
46
  def display_error_message(ex)
49
- $stderr.puts "#{name} aborted!"
50
- $stderr.puts ex.message
47
+ warn "#{name} aborted!"
48
+ warn ex.message
51
49
  if options.trace
52
- $stderr.puts ex.backtrace.join("\n")
50
+ warn ex.backtrace.join("\n")
53
51
  else
54
- $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || ""
55
- $stderr.puts "(See full trace by running task with --trace)"
52
+ warn ex.backtrace.find { |str| str =~ /#{@rakefile}/ } || ""
53
+ warn "(See full trace by running task with --trace)"
56
54
  end
57
55
  end
58
56
  end
@@ -1,9 +1,9 @@
1
- require 'honeybadger/ruby'
1
+ require "honeybadger/ruby"
2
2
 
3
3
  Honeybadger.init!({
4
- :framework => :ruby,
5
- :env => ENV['RUBY_ENV'] || ENV['RACK_ENV'],
6
- :'logging.path' => 'STDOUT'
4
+ framework: :ruby,
5
+ env: ENV["RUBY_ENV"] || ENV["RACK_ENV"],
6
+ "logging.path": "STDOUT"
7
7
  })
8
8
 
9
9
  Honeybadger.load_plugins!
@@ -1,5 +1,5 @@
1
- require 'sinatra/base'
2
- require 'honeybadger/ruby'
1
+ require "sinatra/base"
2
+ require "honeybadger/ruby"
3
3
 
4
4
  module Honeybadger
5
5
  module Init
@@ -15,8 +15,8 @@ module Honeybadger
15
15
  Honeybadger.install_at_exit_callback
16
16
  build_without_honeybadger(*args, &block)
17
17
  end
18
- alias :build_without_honeybadger :build
19
- alias :build :build_with_honeybadger
18
+ alias_method :build_without_honeybadger, :build
19
+ alias_method :build, :build_with_honeybadger
20
20
 
21
21
  def configure_honeybadger
22
22
  return unless defined?(honeybadger_api_key)
@@ -27,21 +27,20 @@ module Honeybadger
27
27
 
28
28
  def install_honeybadger
29
29
  config = Honeybadger.config
30
- return unless config[:'sinatra.enabled']
31
- if config[:'exceptions.enabled']
30
+ return unless config[:"sinatra.enabled"]
31
+ if config[:"exceptions.enabled"]
32
32
  # These two must come before the ErrorNotifier, since an error/response
33
33
  # passes through middleware from inner to outer (bottom to top)
34
- install_honeybadger_middleware(Honeybadger::Rack::UserFeedback) if config[:'feedback.enabled']
35
- install_honeybadger_middleware(Honeybadger::Rack::UserInformer) if config[:'user_informer.enabled']
34
+ install_honeybadger_middleware(Honeybadger::Rack::UserFeedback) if config[:"feedback.enabled"]
35
+ install_honeybadger_middleware(Honeybadger::Rack::UserInformer) if config[:"user_informer.enabled"]
36
36
  install_honeybadger_middleware(Honeybadger::Rack::ErrorNotifier)
37
37
  end
38
38
  end
39
39
 
40
40
  def install_honeybadger_middleware(klass)
41
- return if middleware.any? {|m| m[0] == klass }
41
+ return if middleware.any? { |m| m[0] == klass }
42
42
  use(klass)
43
43
  end
44
-
45
44
  end
46
45
  end
47
46
  end
@@ -49,9 +48,9 @@ module Honeybadger
49
48
  end
50
49
 
51
50
  Honeybadger.init!({
52
- env: ENV['APP_ENV'] || ENV['RACK_ENV'],
51
+ env: ENV["APP_ENV"] || ENV["RACK_ENV"],
53
52
  framework: :sinatra,
54
- :'logging.path' => 'STDOUT'
53
+ "logging.path": "STDOUT"
55
54
  })
56
55
 
57
56
  Honeybadger.load_plugins!