coaster 1.1.0 → 1.3.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 +4 -4
- data/lib/coaster.rb +1 -1
- data/lib/coaster/core_ext/standard_error.rb +20 -11
- data/lib/coaster/version.rb +1 -1
- data/test/locales/en.yml +1 -0
- data/test/test_standard_error.rb +71 -33
- metadata +27 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25d78eb2f5780582358622b301ce8bc56b65a317bebf07bfdd5d719b18701cca
|
4
|
+
data.tar.gz: 9862b67c209853c1a049e5769e503167e0a76fe687ab479755e3272b052dca5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c39ebfe2f732a1f44d0c9d4bdcd0b5a81c1a7fc6b3f76f150be78c83c4fccd6a90b6b4333efd91e0b57194462dd31c58c97bf8225ada59c01efcb3c43b4f313a
|
7
|
+
data.tar.gz: f9915989ceac91f5891ede0dd40ce66c7e4e26f2d6628e508123ee75cb7229e125fe0567576b26f8ecf5e1ab87445ede8699d88d313c431c3968dc2ac8a60090
|
data/lib/coaster.rb
CHANGED
@@ -57,23 +57,23 @@ class StandardError
|
|
57
57
|
msg = hash.delete(:m)
|
58
58
|
msg = hash.delete(:msg) || msg
|
59
59
|
msg = hash.delete(:message) || msg
|
60
|
+
hash[:description] ||= hash.delete(:desc) if hash[:desc].present?
|
60
61
|
@fingerprint = hash.delete(:fingerprint) || hash.delete(:fingerprints)
|
61
62
|
@tags = hash.delete(:tags) || hash.delete(:tag)
|
62
63
|
@level = hash.delete(:level) || hash.delete(:severity) || @level
|
63
64
|
@tkey = hash.delete(:tkey)
|
64
|
-
msg = cause.message if msg.nil? && cause
|
65
65
|
@attributes.merge!(hash)
|
66
66
|
when String then
|
67
67
|
msg = message
|
68
68
|
when FalseClass, NilClass then
|
69
|
-
msg =
|
69
|
+
msg = nil
|
70
70
|
else
|
71
71
|
msg = message
|
72
72
|
end
|
73
73
|
|
74
74
|
@fingerprint = [] unless @fingerprint.is_a?(Array)
|
75
75
|
@tags = {} unless @tags.is_a?(Hash)
|
76
|
-
msg
|
76
|
+
msg = cause.message if msg.blank? && cause
|
77
77
|
super(msg)
|
78
78
|
end
|
79
79
|
|
@@ -125,10 +125,17 @@ class StandardError
|
|
125
125
|
super
|
126
126
|
end
|
127
127
|
|
128
|
+
def _translate_params
|
129
|
+
attributes
|
130
|
+
end
|
131
|
+
|
128
132
|
# user friendly message, for overid
|
129
133
|
def user_message
|
130
134
|
return description if description.present?
|
131
|
-
|
135
|
+
if tkey.present?
|
136
|
+
return _translate
|
137
|
+
end
|
138
|
+
message
|
132
139
|
end
|
133
140
|
|
134
141
|
# another user friendly messages
|
@@ -138,6 +145,15 @@ class StandardError
|
|
138
145
|
attributes[:descriptions]
|
139
146
|
end
|
140
147
|
|
148
|
+
# https://github.com/getsentry/sentry-ruby/blob/fbbc7a51ed10684d0e8b7bd9d2a1b65a7351c9ef/lib/raven/event.rb#L162
|
149
|
+
# sentry message use `to_s` method
|
150
|
+
# https://ruby-doc.org/core-2.5.1/Exception.html#method-i-to_s
|
151
|
+
alias to_origin_s to_s
|
152
|
+
|
153
|
+
def to_s
|
154
|
+
"#{_translate} (#{to_origin_s})"
|
155
|
+
end
|
156
|
+
|
141
157
|
def to_hash
|
142
158
|
hash = attributes.merge(
|
143
159
|
type: self.class.name, status: status,
|
@@ -153,13 +169,6 @@ class StandardError
|
|
153
169
|
hash
|
154
170
|
end
|
155
171
|
|
156
|
-
def _translate_params
|
157
|
-
attributes.merge(
|
158
|
-
type: self.class.name, status: status,
|
159
|
-
http_status: http_status, message: message
|
160
|
-
)
|
161
|
-
end
|
162
|
-
|
163
172
|
def to_json
|
164
173
|
Oj.dump(to_hash.with_indifferent_access, mode: :compat)
|
165
174
|
end
|
data/lib/coaster/version.rb
CHANGED
data/test/locales/en.yml
CHANGED
data/test/test_standard_error.rb
CHANGED
@@ -21,60 +21,98 @@ module Coaster
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_standard_messages
|
24
|
-
e = StandardError.new('
|
25
|
-
assert_equal
|
24
|
+
e = StandardError.new('developer message')
|
25
|
+
assert_equal "standard error translation (developer message)", e.to_s
|
26
|
+
assert_equal "standard error translation (developer message)", e.message
|
26
27
|
assert_nil e.description
|
27
28
|
assert_nil e.desc
|
28
29
|
assert_equal 'standard error translation', e._translate
|
29
|
-
assert_equal 'standard error translation', e.user_message
|
30
|
+
assert_equal 'standard error translation (developer message)', e.user_message
|
30
31
|
assert_equal 'standard error title', e.title
|
31
|
-
e = StandardError.new(m: '
|
32
|
-
assert_equal
|
33
|
-
assert_equal
|
34
|
-
assert_equal '
|
35
|
-
assert_equal '
|
36
|
-
assert_equal '
|
32
|
+
e = StandardError.new(m: 'developer message', desc: 'user message')
|
33
|
+
assert_equal "user message (developer message)", e.to_s
|
34
|
+
assert_equal "user message (developer message)", e.message
|
35
|
+
assert_equal 'user message', e.description
|
36
|
+
assert_equal 'user message', e.desc
|
37
|
+
assert_equal 'user message', e._translate
|
38
|
+
assert_equal 'user message', e.user_message
|
37
39
|
assert_equal 'standard error title', e.title
|
38
40
|
end
|
39
41
|
|
40
42
|
def test_no_translation_class
|
41
|
-
e = UntitledError.new('
|
42
|
-
assert_equal
|
43
|
+
e = UntitledError.new('developer message')
|
44
|
+
assert_equal "standard error translation (developer message)", e.to_s
|
45
|
+
assert_equal "standard error translation (developer message)", e.message
|
43
46
|
assert_nil e.description
|
44
47
|
assert_nil e.desc
|
45
48
|
assert_equal 'standard error translation', e._translate
|
46
|
-
assert_equal 'standard error translation', e.user_message
|
49
|
+
assert_equal 'standard error translation (developer message)', e.user_message
|
47
50
|
assert_equal 'standard error title', e.title
|
48
|
-
e = UntitledError.new(m: '
|
49
|
-
assert_equal
|
50
|
-
assert_equal
|
51
|
-
assert_equal '
|
52
|
-
assert_equal '
|
53
|
-
assert_equal '
|
51
|
+
e = UntitledError.new(m: 'developer message', desc: 'user message')
|
52
|
+
assert_equal "user message (developer message)", e.to_s
|
53
|
+
assert_equal "user message (developer message)", e.message
|
54
|
+
assert_equal 'user message', e.description
|
55
|
+
assert_equal 'user message', e.desc
|
56
|
+
assert_equal 'user message', e._translate
|
57
|
+
assert_equal 'user message', e.user_message
|
58
|
+
assert_equal 'standard error title', e.title
|
59
|
+
e = UntitledError.new(tkey: 'no.translation')
|
60
|
+
assert_equal "translation missing: en.no.translation (Coaster::TestStandardError::UntitledError)", e.to_s
|
61
|
+
assert_equal "translation missing: en.no.translation (Coaster::TestStandardError::UntitledError)", e.message
|
62
|
+
assert_nil e.description
|
63
|
+
assert_nil e.desc
|
64
|
+
assert_equal 'translation missing: en.no.translation', e._translate
|
65
|
+
assert_equal "translation missing: en.no.translation", e.user_message
|
54
66
|
assert_equal 'standard error title', e.title
|
55
67
|
end
|
56
68
|
|
57
69
|
def test_with_translation_class
|
58
|
-
e = SampleError.new
|
59
|
-
assert_equal
|
70
|
+
e = SampleError.new
|
71
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.to_s
|
72
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.message
|
73
|
+
assert_nil e.description
|
74
|
+
assert_nil e.desc
|
75
|
+
assert_equal 'Test sample error', e._translate
|
76
|
+
assert_equal 'Test sample error (Coaster::TestStandardError::SampleError)', e.user_message
|
77
|
+
assert_equal 'Test this title', e.title
|
78
|
+
e = SampleError.new(beet: 'apple')
|
79
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.to_s
|
80
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.message
|
60
81
|
assert_nil e.description
|
61
82
|
assert_nil e.desc
|
62
83
|
assert_equal 'Test sample error', e._translate
|
63
|
-
assert_equal 'Test sample error', e.user_message
|
84
|
+
assert_equal 'Test sample error (Coaster::TestStandardError::SampleError)', e.user_message
|
85
|
+
assert_equal 'Test this title', e.title
|
86
|
+
e = SampleError.new('developer message')
|
87
|
+
assert_equal "Test sample error (developer message)", e.to_s
|
88
|
+
assert_equal "Test sample error (developer message)", e.message
|
89
|
+
assert_nil e.description
|
90
|
+
assert_nil e.desc
|
91
|
+
assert_equal 'Test sample error', e._translate
|
92
|
+
assert_equal 'Test sample error (developer message)', e.user_message
|
64
93
|
assert_equal 'Test this title', e.title
|
65
|
-
e = SampleError.new(m: '
|
66
|
-
assert_equal
|
67
|
-
assert_equal
|
68
|
-
assert_equal '
|
69
|
-
assert_equal '
|
70
|
-
assert_equal '
|
94
|
+
e = SampleError.new(m: 'developer message', desc: 'user message')
|
95
|
+
assert_equal "user message (developer message)", e.to_s
|
96
|
+
assert_equal "user message (developer message)", e.message
|
97
|
+
assert_equal 'user message', e.description
|
98
|
+
assert_equal 'user message', e.desc
|
99
|
+
assert_equal 'user message', e._translate
|
100
|
+
assert_equal 'user message', e.user_message
|
101
|
+
assert_equal 'Test this title', e.title
|
102
|
+
e = SampleError.new(tkey: 'sample.interpolation', value: 'blah')
|
103
|
+
assert_equal "Sample Interpolation blah (Coaster::TestStandardError::SampleError)", e.to_s
|
104
|
+
assert_equal "Sample Interpolation blah (Coaster::TestStandardError::SampleError)", e.message
|
105
|
+
assert_nil e.description
|
106
|
+
assert_nil e.desc
|
107
|
+
assert_equal 'Sample Interpolation blah', e._translate
|
108
|
+
assert_equal 'Sample Interpolation blah', e.user_message
|
71
109
|
assert_equal 'Test this title', e.title
|
72
110
|
end
|
73
111
|
|
74
112
|
def test_message
|
75
113
|
raise SampleError, {m: 'beer is proof'}
|
76
114
|
rescue => e
|
77
|
-
assert_equal
|
115
|
+
assert_equal "Test sample error (beer is proof)", e.message
|
78
116
|
end
|
79
117
|
|
80
118
|
def test_attributes
|
@@ -94,12 +132,12 @@ module Coaster
|
|
94
132
|
assert_equal 'Coaster::TestStandardError::ExampleError', e.to_hash['type']
|
95
133
|
assert_equal 20, e.to_hash['status']
|
96
134
|
assert_equal 500, e.to_hash['http_status']
|
97
|
-
assert_equal
|
135
|
+
assert_equal "Test example error (Test sample error (#{SampleError.name}))", e.to_hash['message']
|
98
136
|
assert_equal 'rams', e.to_hash['cause']['frog']
|
99
137
|
assert_equal 'Coaster::TestStandardError::SampleError', e.to_hash['cause']['type']
|
100
138
|
assert_equal 10, e.to_hash['cause']['status']
|
101
139
|
assert_equal 500, e.to_hash['cause']['http_status']
|
102
|
-
assert_equal
|
140
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.to_hash['cause']['message']
|
103
141
|
end
|
104
142
|
|
105
143
|
def test_cause_attributes
|
@@ -123,7 +161,7 @@ module Coaster
|
|
123
161
|
rescue => e
|
124
162
|
detail = <<-LOG
|
125
163
|
[Coaster::TestStandardError::ExampleError] status:20
|
126
|
-
MESSAGE: Test sample error
|
164
|
+
MESSAGE: Test example error (Test sample error (Coaster::TestStandardError::SampleError))
|
127
165
|
@fingerprint: []
|
128
166
|
@tags: {}
|
129
167
|
@level: \"error\"
|
@@ -131,7 +169,7 @@ module Coaster
|
|
131
169
|
@tkey: nil
|
132
170
|
@raven: {}
|
133
171
|
CAUSE: [Coaster::TestStandardError::SampleError] status:10
|
134
|
-
MESSAGE: Test sample error
|
172
|
+
MESSAGE: Test sample error (Coaster::TestStandardError::SampleError)
|
135
173
|
@fingerprint: []
|
136
174
|
@tags: {}
|
137
175
|
@level: \"error\"
|
@@ -180,7 +218,7 @@ LOG
|
|
180
218
|
begin
|
181
219
|
root_cause_sample3
|
182
220
|
rescue => e
|
183
|
-
assert_equal
|
221
|
+
assert_equal "standard error translation (a)", e.root_cause.message
|
184
222
|
end
|
185
223
|
end
|
186
224
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- buzz jung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 6.0.3.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 6.0.3.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: attr_extras
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,114 +70,72 @@ dependencies:
|
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.12'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.12'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0.8'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0.8'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-stack_explorer
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.4'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.4'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: pry-byebug
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
73
|
+
- - ">="
|
116
74
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
75
|
+
version: '0'
|
118
76
|
type: :development
|
119
77
|
prerelease: false
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
121
79
|
requirements:
|
122
|
-
- - "
|
80
|
+
- - ">="
|
123
81
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
82
|
+
version: '0'
|
125
83
|
- !ruby/object:Gem::Dependency
|
126
84
|
name: minitest
|
127
85
|
requirement: !ruby/object:Gem::Requirement
|
128
86
|
requirements:
|
129
|
-
- - "
|
87
|
+
- - ">="
|
130
88
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
89
|
+
version: '0'
|
132
90
|
type: :development
|
133
91
|
prerelease: false
|
134
92
|
version_requirements: !ruby/object:Gem::Requirement
|
135
93
|
requirements:
|
136
|
-
- - "
|
94
|
+
- - ">="
|
137
95
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
96
|
+
version: '0'
|
139
97
|
- !ruby/object:Gem::Dependency
|
140
98
|
name: mocha
|
141
99
|
requirement: !ruby/object:Gem::Requirement
|
142
100
|
requirements:
|
143
|
-
- - "
|
101
|
+
- - ">="
|
144
102
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
103
|
+
version: '0'
|
146
104
|
type: :development
|
147
105
|
prerelease: false
|
148
106
|
version_requirements: !ruby/object:Gem::Requirement
|
149
107
|
requirements:
|
150
|
-
- - "
|
108
|
+
- - ">="
|
151
109
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
110
|
+
version: '0'
|
153
111
|
- !ruby/object:Gem::Dependency
|
154
112
|
name: shoulda
|
155
113
|
requirement: !ruby/object:Gem::Requirement
|
156
114
|
requirements:
|
157
|
-
- - "
|
115
|
+
- - ">="
|
158
116
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
117
|
+
version: '0'
|
160
118
|
type: :development
|
161
119
|
prerelease: false
|
162
120
|
version_requirements: !ruby/object:Gem::Requirement
|
163
121
|
requirements:
|
164
|
-
- - "
|
122
|
+
- - ">="
|
165
123
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
124
|
+
version: '0'
|
167
125
|
- !ruby/object:Gem::Dependency
|
168
126
|
name: shoulda-context
|
169
127
|
requirement: !ruby/object:Gem::Requirement
|
170
128
|
requirements:
|
171
|
-
- - "
|
129
|
+
- - ">="
|
172
130
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
131
|
+
version: '0'
|
174
132
|
type: :development
|
175
133
|
prerelease: false
|
176
134
|
version_requirements: !ruby/object:Gem::Requirement
|
177
135
|
requirements:
|
178
|
-
- - "
|
136
|
+
- - ">="
|
179
137
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
138
|
+
version: '0'
|
181
139
|
description: Ruby Core Extensions
|
182
140
|
email: buzz@frograms.com
|
183
141
|
executables: []
|
@@ -221,12 +179,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
179
|
- !ruby/object:Gem::Version
|
222
180
|
version: '0'
|
223
181
|
requirements: []
|
224
|
-
rubygems_version: 3.
|
182
|
+
rubygems_version: 3.1.2
|
225
183
|
signing_key:
|
226
184
|
specification_version: 4
|
227
185
|
summary: A little convenient feature for standard library
|
228
186
|
test_files:
|
229
187
|
- test/test_object_translation.rb
|
230
|
-
- test/locales/en.yml
|
231
|
-
- test/test_standard_error.rb
|
232
188
|
- test/test_helper.rb
|
189
|
+
- test/test_standard_error.rb
|
190
|
+
- test/locales/en.yml
|