honeybadger 2.0.0.beta.1 → 2.0.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7da3276ec8bbc96881dc0edf11dfa62dfb0081dc
4
- data.tar.gz: dd2d483879772690a1049a6de31bcaf37058d09a
3
+ metadata.gz: ff1cb69549509f0a3ba7d723dcbed181b4f8845d
4
+ data.tar.gz: d413ed284a9b6fb3a8be8ae3c8621514cb4f4037
5
5
  SHA512:
6
- metadata.gz: afa97bb207635301b1106641a54408b1024858449a275b31ea7eec3fc4c404f69b4d65b3cffac35a70ab04866fa4f7fe36e277f8233fc6bba3743c90473cafdc
7
- data.tar.gz: 0b46525e824d08b42af3415a0c687eeed306a788a229c6dcd069e72432716512093b8a70d0e4fba5044cdf1e85d521f5c6d98b8da732daa8abbd071816c76f31
6
+ metadata.gz: eba0eaf3bd4cc030b43904b0f855fbb536893faddbd095a046a4edeab8a2bfa876963e42e14dd9adcbbba00341230b11a20d2e7138128053790edc3c2133ed6c
7
+ data.tar.gz: 728b30a14a67a0f91ded6f26010fae33f8671780c3aab6ac4b57c38e16699f73f49b23bc902a308377e47a6a8866378b8f50dcbc367de9d39868c2bf2606e792
@@ -178,3 +178,7 @@ if defined?(::Rails::Railtie)
178
178
  elsif defined?(Sinatra::Base)
179
179
  require 'honeybadger/init/sinatra'
180
180
  end
181
+
182
+ if defined?(Rake.application)
183
+ require 'honeybadger/init/rake'
184
+ end
@@ -0,0 +1,65 @@
1
+ # Patch Rake::Application to handle errors with Honeybadger
2
+ module Honeybadger
3
+ module RakeHandler
4
+ def self.included(klass)
5
+ klass.class_eval do
6
+ include Rake087Methods unless defined?(Rake::VERSION) && Rake::VERSION >= '0.9.0'
7
+ alias_method :display_error_message_without_honeybadger, :display_error_message
8
+ alias_method :display_error_message, :display_error_message_with_honeybadger
9
+ end
10
+ end
11
+
12
+ def display_error_message_with_honeybadger(ex)
13
+ if !self.tty_output?
14
+ Honeybadger.notify_or_ignore(ex, origin: :rake, component: reconstruct_command_line)
15
+ Honeybadger.context.clear!
16
+ end
17
+
18
+ display_error_message_without_honeybadger(ex)
19
+ end
20
+
21
+ def reconstruct_command_line
22
+ "rake #{ARGV.join( ' ' )}"
23
+ end
24
+
25
+ # This module brings Rake 0.8.7 error handling to 0.9.0 standards
26
+ module Rake087Methods
27
+ # Method taken from Rake 0.9.0 source
28
+ #
29
+ # Provide standard exception handling for the given block.
30
+ def standard_exception_handling
31
+ begin
32
+ yield
33
+ rescue SystemExit => ex
34
+ # Exit silently with current status
35
+ raise
36
+ rescue OptionParser::InvalidOption => ex
37
+ $stderr.puts ex.message
38
+ exit(false)
39
+ rescue Exception => ex
40
+ # Exit with error message
41
+ display_error_message(ex)
42
+ exit(false)
43
+ end
44
+ end
45
+
46
+ # Method extracted from Rake 0.8.7 source
47
+ def display_error_message(ex)
48
+ $stderr.puts "#{name} aborted!"
49
+ $stderr.puts ex.message
50
+ if options.trace
51
+ $stderr.puts ex.backtrace.join("\n")
52
+ else
53
+ $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || ""
54
+ $stderr.puts "(See full trace by running task with --trace)"
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ Rake.application.instance_eval do
62
+ class << self
63
+ include Honeybadger::RakeHandler
64
+ end
65
+ end
@@ -202,16 +202,23 @@ module Honeybadger
202
202
 
203
203
  # Internal: Determines if this notice should be ignored
204
204
  def ignore?
205
- config[:'exceptions.ignore'].any?(&ignore_by_class?) or
206
- opts[:callbacks] &&
207
- opts[:callbacks].exception_filter &&
208
- opts[:callbacks].exception_filter.call(self)
205
+ ignore_by_origin? || ignore_by_class? || ignore_by_callbacks?
209
206
  end
210
207
 
211
208
  private
212
209
 
213
210
  attr_reader :config, :opts, :context, :stats, :api_key, :now
214
211
 
212
+ def ignore_by_origin?
213
+ opts[:origin] == :rake && !config[:'exceptions.rescue_rake']
214
+ end
215
+
216
+ def ignore_by_callbacks?
217
+ opts[:callbacks] &&
218
+ opts[:callbacks].exception_filter &&
219
+ opts[:callbacks].exception_filter.call(self)
220
+ end
221
+
215
222
  # Gets a property named "attribute" of an exception, either from
216
223
  # the #args hash or actual exception (in order of precidence)
217
224
  #
@@ -249,7 +256,7 @@ module Honeybadger
249
256
  # ignored_class_name - The name of the ignored class. May be a
250
257
  # string or regexp (optional)
251
258
  #
252
- # Returns true/false with an argument, otherwise a Proc object
259
+ # Returns true or false
253
260
  def ignore_by_class?(ignored_class = nil)
254
261
  @ignore_by_class ||= Proc.new do |ignored_class|
255
262
  case error_class
@@ -260,7 +267,7 @@ module Honeybadger
260
267
  end
261
268
  end
262
269
 
263
- ignored_class ? @ignore_by_class.call(ignored_class) : @ignore_by_class
270
+ ignored_class ? @ignore_by_class.call(ignored_class) : config[:'exceptions.ignore'].any?(&@ignore_by_class)
264
271
  end
265
272
 
266
273
  # Limit size of string to bytes
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # Public: The current String Honeybadger version.
3
- VERSION = '2.0.0.beta.1'.freeze
3
+ VERSION = '2.0.0.beta.2'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta.1
4
+ version: 2.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Honeybadger Industries LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-08 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Make managing application errors a more pleasant experience.
14
14
  email:
@@ -38,6 +38,7 @@ files:
38
38
  - lib/honeybadger/config/yaml.rb
39
39
  - lib/honeybadger/const.rb
40
40
  - lib/honeybadger/init/rails.rb
41
+ - lib/honeybadger/init/rake.rb
41
42
  - lib/honeybadger/init/sinatra.rb
42
43
  - lib/honeybadger/logging.rb
43
44
  - lib/honeybadger/notice.rb
@@ -120,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
121
  requirements:
121
122
  - - ">="
122
123
  - !ruby/object:Gem::Version
123
- version: '0'
124
+ version: 1.9.3
124
125
  required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  requirements:
126
127
  - - ">"