robustly 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4af8ee25fdac4dc4261e15a3c8607f3d9d0b4e93
4
- data.tar.gz: 2bc8d4431a28b32890c6e8e13891734e85720c1a
3
+ metadata.gz: ca4ab42ad4c9c82369991b01dcada93a3a58138e
4
+ data.tar.gz: e2bbafae919d162f320e9f1632bb054fe1eeae07
5
5
  SHA512:
6
- metadata.gz: a94cd1beb0d704272d14469042e50ab2c2121efbd572502fad3b454597f51a65bb6bbd9b0297fe4926d8a2a29fb069ba853f195dc031aa1848dd555f64962576
7
- data.tar.gz: 4e60611345fc061cf2d92269d813c1158ccd98beb583410678adbebcb7c540cf32d0d533e6460a49ce82d150076dace63bcefed4214c872b41009aa9a8e10275
6
+ metadata.gz: 988758ad8ae65d80cb04f2bc4c25ee6d31c595c5427541bd9561310888065bba57d0b7b33068bb13974cf60bee7206a1a69471d5bb194293dd10edcd7aa7b475
7
+ data.tar.gz: 37dc2e5d78b0d5921924bca8d0cd888cce520ff72063ce0799df974f3413e3b0c88ddea5dc88230889b77e306ca1b1ad7a92d0f8b2f4bb7844f51c05b7ce1ea8
data/README.md CHANGED
@@ -10,15 +10,15 @@ end
10
10
 
11
11
  Raises exceptions in development and test environments and rescues and reports exceptions elsewhere.
12
12
 
13
- Also aliased to `yolo`.
13
+ Also aliased as `yolo`.
14
14
 
15
15
  ```ruby
16
16
  yolo do
17
- # you only live once
17
+ # get crazy in here
18
18
  end
19
19
  ```
20
20
 
21
- Reports exceptions to [Rollbar](https://rollbar.com/), [Honeybadger](https://www.honeybadger.io/), [Airbrake](https://airbrake.io/), [Exceptional](http://www.exceptional.io/), [Exception Notification](http://smartinez87.github.io/exception_notification/), and [Raygun](https://raygun.io/) out of the box thanks to [Errbase](https://github.com/ankane/errbase).
21
+ Reports exceptions to [Rollbar](https://rollbar.com/), [Airbrake](https://airbrake.io/), [Exceptional](http://www.exceptional.io/), [Honeybadger](https://www.honeybadger.io/), [Sentry](https://getsentry.com/), [Raygun](https://raygun.io/), and [Bugsnag](https://bugsnag.com/) out of the box thanks to [Errbase](https://github.com/ankane/errbase).
22
22
 
23
23
  Customize reporting with:
24
24
 
@@ -34,6 +34,22 @@ robustly throttle: 1000 do
34
34
  end
35
35
  ```
36
36
 
37
+ Specify a default value to return on errors:
38
+
39
+ ```ruby
40
+ robustly default: 30 do
41
+ # big bucks, no whammy
42
+ end
43
+ ```
44
+
45
+ Catch specific errors
46
+
47
+ ```ruby
48
+ robustly only: ActiveRecord::RecordNotUnique do
49
+ # all other exceptions will be raised
50
+ end
51
+ ```
52
+
37
53
  ## Installation
38
54
 
39
55
  Add this line to your application’s Gemfile:
@@ -42,10 +58,6 @@ Add this line to your application’s Gemfile:
42
58
  gem 'robustly'
43
59
  ```
44
60
 
45
- ## TODO
46
-
47
- - ability to catch specific errors
48
-
49
61
  ## Contributing
50
62
 
51
63
  Everyone is encouraged to help improve this project. Here are a few ways you can help:
@@ -1,4 +1,5 @@
1
1
  require "robustly/version"
2
+ require "errbase"
2
3
 
3
4
  module Robustly
4
5
 
@@ -17,13 +18,15 @@ module Robustly
17
18
  module Methods
18
19
 
19
20
  def robustly(options = {}, &block)
21
+ class_names = Array(options[:only] || StandardError)
20
22
  begin
21
23
  yield
22
- rescue => e
24
+ rescue *class_names => e
23
25
  raise e if %w[development test].include?(Robustly.env)
24
26
  if options[:throttle] ? rand < 1.0 / options[:throttle] : true
25
27
  Robustly.report_exception(e)
26
28
  end
29
+ options[:default]
27
30
  end
28
31
  end
29
32
  alias_method :yolo, :robustly
@@ -1,3 +1,3 @@
1
1
  module Robustly
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -4,6 +4,7 @@ class TestRobustly < Minitest::Test
4
4
 
5
5
  def setup
6
6
  Robustly.env = "production"
7
+ Robustly.report_exception_method = proc {|e| Errbase.report(e) }
7
8
  end
8
9
 
9
10
  def test_robustly_development_environment
@@ -46,4 +47,24 @@ class TestRobustly < Minitest::Test
46
47
  assert mock.verify
47
48
  end
48
49
 
50
+ def test_return_value
51
+ assert_equal 1, robustly { 1 }
52
+ assert_equal nil, robustly { raise Robustly::TestError }
53
+ end
54
+
55
+ def test_default
56
+ assert_equal 1, robustly(default: 2) { 1 }
57
+ assert_equal 2, robustly(default: 2) { raise Robustly::TestError }
58
+ end
59
+
60
+ def test_only
61
+ assert_equal nil, robustly(only: Robustly::TestError) { raise Robustly::TestError }
62
+ assert_raises(RuntimeError, "Boom") { robustly(only: Robustly::TestError) { raise RuntimeError.new("Boom") } }
63
+ end
64
+
65
+ def test_only_array
66
+ assert_equal nil, robustly(only: [Robustly::TestError]) { raise Robustly::TestError }
67
+ assert_raises(RuntimeError, "Boom") { robustly(only: [Robustly::TestError]) { raise RuntimeError.new("Boom") } }
68
+ end
69
+
49
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robustly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane