exception_transformer 0.1.0 → 1.0.4
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 +4 -4
- data/lib/exception_transformer/config.rb +9 -0
- data/lib/exception_transformer/reportable.rb +5 -3
- data/lib/exception_transformer/transformer.rb +3 -2
- data/lib/exception_transformer/version.rb +3 -1
- data/lib/exception_transformer.rb +22 -4
- data/spec/exception_transformer_spec.rb +1 -1
- data/spec/helpers/class_helpers.rb +2 -0
- metadata +19 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272b46f70bc388c083c38c75825a4ad0e34897440d010eceb033782401db631f
|
4
|
+
data.tar.gz: 23199a781b0e9ec21acc34e4415991e4dbd1cef5a411ce320807a57b7704c195
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c60bcf3b38760782d3e60b12f43ce0f535f48401aacd73d9b0a3037ee45091833f96c0b59e4ad5a9aed916aafbadca727b3b1be9b8151c61e915dfad0cfb55e
|
7
|
+
data.tar.gz: 7b28f3c21a6aa141aa340167295cfe59e04d7ba5abeffbf9d468644481b5759870cf50a02f08c29f6d805904cecf73fa9417eddf2d9ae997351d2711c937a1c1
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ExceptionTransformer
|
2
4
|
# Include this module when declaring an exception class to add
|
3
5
|
# the `reportable?` flag to individual exceptions. The presence
|
@@ -27,19 +29,19 @@ module ExceptionTransformer
|
|
27
29
|
module ClassMethods
|
28
30
|
# Returns a subclass 'Reportable_<name>' of the current class that
|
29
31
|
# includes `Reportable`. This subclass is created the first time
|
30
|
-
#
|
32
|
+
# this method is called and reused for subsequent invocations.
|
31
33
|
def as_reportable
|
32
34
|
return self if self <= ReportableException
|
33
35
|
|
34
36
|
name = reportable_name
|
35
|
-
mod
|
37
|
+
mod = self.respond_to?(:module_parent) ? module_parent : parent
|
36
38
|
|
37
39
|
mod.const_defined?(name) ? mod.const_get(name) : mod.const_set(name, build_reportable)
|
38
40
|
end
|
39
41
|
|
40
42
|
def unload_reportable
|
41
43
|
name = reportable_name
|
42
|
-
mod
|
44
|
+
mod = self.respond_to?(:module_parent) ? module_parent : parent
|
43
45
|
|
44
46
|
mod.send(:remove_const, name) if mod.const_defined?(name)
|
45
47
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ExceptionTransformer::Transformer
|
2
4
|
attr_accessor :strategy, :validator, :delegate, :mappings
|
3
5
|
|
@@ -83,8 +85,7 @@ class ExceptionTransformer::Transformer
|
|
83
85
|
yield
|
84
86
|
rescue => e
|
85
87
|
unless e.respond_to?(:reportable?) && !e.reportable?
|
86
|
-
|
87
|
-
# Raven.capture_exception(e)
|
88
|
+
ExceptionTransformer.config.reporter.call(e)
|
88
89
|
end
|
89
90
|
|
90
91
|
raise
|
@@ -1,17 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'exception_transformer/version'
|
4
|
+
require 'exception_transformer/config'
|
2
5
|
require 'exception_transformer/transformer'
|
6
|
+
require 'exception_transformer/reportable'
|
3
7
|
|
4
8
|
require 'active_support'
|
5
9
|
require 'active_support/core_ext'
|
6
10
|
|
7
|
-
require 'byebug'
|
8
|
-
|
9
11
|
module ExceptionTransformer
|
12
|
+
attr_accessor :config
|
13
|
+
|
10
14
|
def self.included base
|
11
15
|
base.send :include, InstanceMethods
|
12
16
|
base.extend ClassMethods
|
13
17
|
end
|
14
18
|
|
19
|
+
# To send exceptions to a crash reporter, implement a configuration block:
|
20
|
+
# @example
|
21
|
+
# ExceptionTransformer.configure do |config|
|
22
|
+
# config.reporter = proc { |e| Raven.capture_exception(e) }
|
23
|
+
# end
|
24
|
+
def self.configure
|
25
|
+
yield config if block_given?
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.config
|
29
|
+
@config ||= Config.new
|
30
|
+
end
|
31
|
+
|
15
32
|
module ClassMethods
|
16
33
|
# Add exceptions to be transformed in `handle_exceptions` block.
|
17
34
|
# @examples
|
@@ -67,16 +84,17 @@ module ExceptionTransformer
|
|
67
84
|
def handle_exceptions(group = :default, **opts)
|
68
85
|
# NOTE: `base_label` returns the label of this frame without decoration,
|
69
86
|
# i.e. if `label` was 'block in test', then `base_label` would be `test`.
|
87
|
+
|
70
88
|
calling_method = caller_locations(1, 1)[0].base_label
|
71
89
|
transformer = self.class.find_exception_transformer(group)
|
72
90
|
|
73
91
|
result = yield
|
74
92
|
|
75
|
-
transformer.after_yield(self, result, calling_method, opts)
|
93
|
+
transformer.after_yield(self, result, calling_method, **opts)
|
76
94
|
|
77
95
|
result
|
78
96
|
rescue => e
|
79
|
-
transformer.after_rescue(self, e, calling_method, opts)
|
97
|
+
transformer.after_rescue(self, e, calling_method, **opts)
|
80
98
|
end
|
81
99
|
end
|
82
100
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exception_transformer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick McLaren
|
@@ -9,79 +9,65 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 2.2.33
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 2.2.33
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 12.3.3
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 12.3.3
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '3.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '3.0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: byebug
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '10.0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '10.0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: activesupport
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
|
-
- - "
|
60
|
+
- - ">="
|
75
61
|
- !ruby/object:Gem::Version
|
76
62
|
version: '5.0'
|
77
63
|
type: :runtime
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
|
-
- - "
|
67
|
+
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
69
|
version: '5.0'
|
84
|
-
description:
|
70
|
+
description: Transform exceptions and send to a crash reporter.
|
85
71
|
email:
|
86
72
|
- patrick@privy.com
|
87
73
|
- allina@privy.com
|
@@ -90,6 +76,7 @@ extensions: []
|
|
90
76
|
extra_rdoc_files: []
|
91
77
|
files:
|
92
78
|
- lib/exception_transformer.rb
|
79
|
+
- lib/exception_transformer/config.rb
|
93
80
|
- lib/exception_transformer/reportable.rb
|
94
81
|
- lib/exception_transformer/transformer.rb
|
95
82
|
- lib/exception_transformer/version.rb
|
@@ -97,7 +84,7 @@ files:
|
|
97
84
|
- spec/exception_transformer_spec.rb
|
98
85
|
- spec/helpers/class_helpers.rb
|
99
86
|
- spec/spec_helper.rb
|
100
|
-
homepage: https://github.com/Privy/
|
87
|
+
homepage: https://github.com/Privy/exception_transformer
|
101
88
|
licenses:
|
102
89
|
- MIT
|
103
90
|
metadata: {}
|
@@ -109,15 +96,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
96
|
requirements:
|
110
97
|
- - ">="
|
111
98
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
99
|
+
version: 2.6.0
|
113
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
101
|
requirements:
|
115
102
|
- - ">="
|
116
103
|
- !ruby/object:Gem::Version
|
117
104
|
version: '0'
|
118
105
|
requirements: []
|
119
|
-
|
120
|
-
rubygems_version: 2.7.6
|
106
|
+
rubygems_version: 3.1.4
|
121
107
|
signing_key:
|
122
108
|
specification_version: 4
|
123
109
|
summary: Error Handling
|