squash_ruby 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/squash/ruby.rb +43 -0
  2. metadata +29 -29
data/lib/squash/ruby.rb CHANGED
@@ -152,6 +152,7 @@ module Squash
152
152
  # ignore. If not provided, ignores all exceptions raised in the block.
153
153
  # @yield The code to ignore exceptions in.
154
154
  # @return The result of the block.
155
+ # @raise [ArgumentError] If no block is provided.
155
156
 
156
157
  def self.ignore_exceptions(exception_classes=nil)
157
158
  raise ArgumentError, "Squash::Ruby.ignore_exceptions must be called with a block" unless block_given?
@@ -185,6 +186,48 @@ module Squash
185
186
  end
186
187
  end
187
188
 
189
+ # @overload fail_silently(exception_classes=nil, options={})
190
+ # Executes the block, suppressing and silently reporting any exceptions to
191
+ # Squash. This allows you to ensure that a non-critical block of code
192
+ # does not halt your application while still receiving exception
193
+ # notifications in Squash.
194
+ # @param [Array<Class>] exception_classes A list of exception classes to
195
+ # report silently. Exceptions _not_ of these classes (or their
196
+ # subclasses) will raise (and presumably be handled by Squash elsewhere
197
+ # in your code).
198
+ # @param [Hash] options Additional options to pass to {.notify}.
199
+ # @yield The code to suppress exceptions in.
200
+ # @return The result of the block.
201
+ # @raise [ArgumentError] If no block is provided.
202
+
203
+ def self.fail_silently(exception_classes_or_options=nil, options=nil)
204
+ raise ArgumentError, "Squash::Ruby.exception_classes must be called with a block" unless block_given?
205
+
206
+ exception_classes = if options
207
+ exception_classes_or_options
208
+ else
209
+ if exception_classes_or_options.kind_of?(Hash) then
210
+ options = exception_classes_or_options
211
+ nil
212
+ else
213
+ exception_classes_or_options
214
+ end
215
+ end
216
+ options ||= {}
217
+
218
+ exception_classes = [exception_classes] if exception_classes.kind_of?(Class)
219
+
220
+ begin
221
+ yield
222
+ rescue Object => err
223
+ if exception_classes.nil? || exception_classes.detect { |e| err.kind_of?(e) }
224
+ Squash::Ruby.notify err, options
225
+ else
226
+ raise
227
+ end
228
+ end
229
+ end
230
+
188
231
  # Sets configuration options for the client from a hash. See the README for
189
232
  # a list of configuration options. Subsequent calls will merge in new
190
233
  # configuration options.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squash_ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
9
- - 1
10
- version: 1.1.1
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Morgan
@@ -15,10 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-03-19 00:00:00 Z
18
+ date: 2013-04-23 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ type: :runtime
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
23
  none: false
23
24
  requirements:
24
25
  - - ">="
@@ -27,12 +28,12 @@ dependencies:
27
28
  segments:
28
29
  - 0
29
30
  version: "0"
30
- version_requirements: *id001
31
- name: json
31
+ requirement: *id001
32
32
  prerelease: false
33
- type: :runtime
33
+ name: json
34
34
  - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ type: :development
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
37
  none: false
37
38
  requirements:
38
39
  - - ">="
@@ -41,12 +42,12 @@ dependencies:
41
42
  segments:
42
43
  - 0
43
44
  version: "0"
44
- version_requirements: *id002
45
- name: rspec
45
+ requirement: *id002
46
46
  prerelease: false
47
- type: :development
47
+ name: rspec
48
48
  - !ruby/object:Gem::Dependency
49
- requirement: &id003 !ruby/object:Gem::Requirement
49
+ type: :development
50
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
51
  none: false
51
52
  requirements:
52
53
  - - ">="
@@ -55,12 +56,12 @@ dependencies:
55
56
  segments:
56
57
  - 0
57
58
  version: "0"
58
- version_requirements: *id003
59
- name: fakefs
59
+ requirement: *id003
60
60
  prerelease: false
61
- type: :development
61
+ name: fakefs
62
62
  - !ruby/object:Gem::Dependency
63
- requirement: &id004 !ruby/object:Gem::Requirement
63
+ type: :development
64
+ version_requirements: &id004 !ruby/object:Gem::Requirement
64
65
  none: false
65
66
  requirements:
66
67
  - - ">="
@@ -69,12 +70,12 @@ dependencies:
69
70
  segments:
70
71
  - 0
71
72
  version: "0"
72
- version_requirements: *id004
73
- name: yard
73
+ requirement: *id004
74
74
  prerelease: false
75
- type: :development
75
+ name: yard
76
76
  - !ruby/object:Gem::Dependency
77
- requirement: &id005 !ruby/object:Gem::Requirement
77
+ type: :development
78
+ version_requirements: &id005 !ruby/object:Gem::Requirement
78
79
  none: false
79
80
  requirements:
80
81
  - - ">="
@@ -83,12 +84,12 @@ dependencies:
83
84
  segments:
84
85
  - 0
85
86
  version: "0"
86
- version_requirements: *id005
87
- name: redcarpet
87
+ requirement: *id005
88
88
  prerelease: false
89
- type: :development
89
+ name: redcarpet
90
90
  - !ruby/object:Gem::Dependency
91
- requirement: &id006 !ruby/object:Gem::Requirement
91
+ type: :development
92
+ version_requirements: &id006 !ruby/object:Gem::Requirement
92
93
  none: false
93
94
  requirements:
94
95
  - - ">="
@@ -97,10 +98,9 @@ dependencies:
97
98
  segments:
98
99
  - 0
99
100
  version: "0"
100
- version_requirements: *id006
101
- name: jeweler
101
+ requirement: *id006
102
102
  prerelease: false
103
- type: :development
103
+ name: jeweler
104
104
  description: This client library records Ruby exceptions to Squash.
105
105
  email: tim@squareup.com
106
106
  executables: []