coaster 1.3.0 → 1.3.5
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/core_ext/standard_error.rb +13 -16
- data/lib/coaster/version.rb +1 -1
- data/test/test_standard_error.rb +54 -32
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ca831c98247a51e387740d4a2b15d9d7c31a37a4a119e69bf9081cc6ef08a438
|
|
4
|
+
data.tar.gz: dedfc0e5be84563640b98ac5808dda34c735ac2ca40edac5c76d906d69c9b63d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d8591789c4e587d37b88033881c6031d7ce231915058b2eac1b041c5e2d8933a03808a157a6f8cf17b3b5541c0ee25b1fd3b24992956467bfda165369c22968
|
|
7
|
+
data.tar.gz: f778ee607e1f0a249518df4292427e4fd812ebbca8868b40908e593dce6670d4a818b166a58aa24cb5f195f9159119983684ff1fee0cf6c2273bf02d54a949a6
|
|
@@ -53,6 +53,7 @@ class StandardError
|
|
|
53
53
|
msg = message
|
|
54
54
|
set_backtrace(message.backtrace)
|
|
55
55
|
when Hash then
|
|
56
|
+
@coaster = true # coaster 확장을 사용한 에러임을 확인할 수 있음.
|
|
56
57
|
hash = message.with_indifferent_access rescue message
|
|
57
58
|
msg = hash.delete(:m)
|
|
58
59
|
msg = hash.delete(:msg) || msg
|
|
@@ -63,6 +64,12 @@ class StandardError
|
|
|
63
64
|
@level = hash.delete(:level) || hash.delete(:severity) || @level
|
|
64
65
|
@tkey = hash.delete(:tkey)
|
|
65
66
|
@attributes.merge!(hash)
|
|
67
|
+
if @attributes[:description] == :translate
|
|
68
|
+
@attributes.delete(:description)
|
|
69
|
+
@attributes[:description] = _translate
|
|
70
|
+
end
|
|
71
|
+
msg = "#{_translate} (#{msg || self.class.name})"
|
|
72
|
+
msg = "#{msg} {#{cause.message}}" if cause
|
|
66
73
|
when String then
|
|
67
74
|
msg = message
|
|
68
75
|
when FalseClass, NilClass then
|
|
@@ -73,7 +80,7 @@ class StandardError
|
|
|
73
80
|
|
|
74
81
|
@fingerprint = [] unless @fingerprint.is_a?(Array)
|
|
75
82
|
@tags = {} unless @tags.is_a?(Hash)
|
|
76
|
-
msg = cause.message if msg.blank? && cause
|
|
83
|
+
msg = "{#{cause.message}}" if msg.blank? && cause
|
|
77
84
|
super(msg)
|
|
78
85
|
end
|
|
79
86
|
|
|
@@ -115,9 +122,7 @@ class StandardError
|
|
|
115
122
|
|
|
116
123
|
# description is user friendly message as a attribute, do not use error's message
|
|
117
124
|
# error message is not user friendly in many cases.
|
|
118
|
-
def description
|
|
119
|
-
attributes[:description] || attributes[:desc]
|
|
120
|
-
end
|
|
125
|
+
def description; attributes[:description] || attributes[:desc] end
|
|
121
126
|
alias_method :desc, :description
|
|
122
127
|
|
|
123
128
|
def _translate(*args)
|
|
@@ -131,8 +136,9 @@ class StandardError
|
|
|
131
136
|
|
|
132
137
|
# user friendly message, for overid
|
|
133
138
|
def user_message
|
|
134
|
-
return
|
|
135
|
-
_translate
|
|
139
|
+
return _translate if description.present? || tkey.present?
|
|
140
|
+
return "#{_translate} (#{message})" unless defined?(@coaster)
|
|
141
|
+
message
|
|
136
142
|
end
|
|
137
143
|
|
|
138
144
|
# another user friendly messages
|
|
@@ -142,15 +148,6 @@ class StandardError
|
|
|
142
148
|
attributes[:descriptions]
|
|
143
149
|
end
|
|
144
150
|
|
|
145
|
-
# https://github.com/getsentry/sentry-ruby/blob/fbbc7a51ed10684d0e8b7bd9d2a1b65a7351c9ef/lib/raven/event.rb#L162
|
|
146
|
-
# sentry message use `to_s` method
|
|
147
|
-
# https://ruby-doc.org/core-2.5.1/Exception.html#method-i-to_s
|
|
148
|
-
alias to_origin_s to_s
|
|
149
|
-
|
|
150
|
-
def to_s
|
|
151
|
-
"#{_translate}\n#{to_origin_s}"
|
|
152
|
-
end
|
|
153
|
-
|
|
154
151
|
def to_hash
|
|
155
152
|
hash = attributes.merge(
|
|
156
153
|
type: self.class.name, status: status,
|
|
@@ -174,7 +171,7 @@ class StandardError
|
|
|
174
171
|
lg = "[#{self.class.name}] status:#{status}"
|
|
175
172
|
lg += "\n\tMESSAGE: #{safe_message.gsub(/\n/, "\n\t\t")}"
|
|
176
173
|
instance_variables.each do |var|
|
|
177
|
-
if var.to_s.start_with?('@_')
|
|
174
|
+
if var.to_s.start_with?('@_') || var.to_s == '@coaster'
|
|
178
175
|
next
|
|
179
176
|
elsif var.to_s == '@spell_checker'
|
|
180
177
|
next
|
data/lib/coaster/version.rb
CHANGED
data/test/test_standard_error.rb
CHANGED
|
@@ -22,16 +22,16 @@ module Coaster
|
|
|
22
22
|
|
|
23
23
|
def test_standard_messages
|
|
24
24
|
e = StandardError.new('developer message')
|
|
25
|
-
assert_equal "
|
|
26
|
-
assert_equal "
|
|
25
|
+
assert_equal "developer message", e.to_s
|
|
26
|
+
assert_equal "developer message", e.message
|
|
27
27
|
assert_nil e.description
|
|
28
28
|
assert_nil e.desc
|
|
29
29
|
assert_equal 'standard error translation', e._translate
|
|
30
|
-
assert_equal 'standard error translation', e.user_message
|
|
30
|
+
assert_equal 'standard error translation (developer message)', e.user_message
|
|
31
31
|
assert_equal 'standard error title', e.title
|
|
32
32
|
e = StandardError.new(m: 'developer message', desc: 'user message')
|
|
33
|
-
assert_equal "user message
|
|
34
|
-
assert_equal "user message
|
|
33
|
+
assert_equal "user message (developer message)", e.to_s
|
|
34
|
+
assert_equal "user message (developer message)", e.message
|
|
35
35
|
assert_equal 'user message', e.description
|
|
36
36
|
assert_equal 'user message', e.desc
|
|
37
37
|
assert_equal 'user message', e._translate
|
|
@@ -41,59 +41,83 @@ module Coaster
|
|
|
41
41
|
|
|
42
42
|
def test_no_translation_class
|
|
43
43
|
e = UntitledError.new('developer message')
|
|
44
|
-
assert_equal "
|
|
45
|
-
assert_equal "
|
|
44
|
+
assert_equal "developer message", e.to_s
|
|
45
|
+
assert_equal "developer message", e.message
|
|
46
46
|
assert_nil e.description
|
|
47
47
|
assert_nil e.desc
|
|
48
48
|
assert_equal 'standard error translation', e._translate
|
|
49
|
-
assert_equal 'standard error translation', e.user_message
|
|
49
|
+
assert_equal 'standard error translation (developer message)', e.user_message
|
|
50
50
|
assert_equal 'standard error title', e.title
|
|
51
51
|
e = UntitledError.new(m: 'developer message', desc: 'user message')
|
|
52
|
-
assert_equal "user message
|
|
53
|
-
assert_equal "user message
|
|
52
|
+
assert_equal "user message (developer message)", e.to_s
|
|
53
|
+
assert_equal "user message (developer message)", e.message
|
|
54
54
|
assert_equal 'user message', e.description
|
|
55
55
|
assert_equal 'user message', e.desc
|
|
56
56
|
assert_equal 'user message', e._translate
|
|
57
57
|
assert_equal 'user message', e.user_message
|
|
58
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
|
|
66
|
+
assert_equal 'standard error title', e.title
|
|
59
67
|
end
|
|
60
68
|
|
|
61
69
|
def test_with_translation_class
|
|
62
70
|
e = SampleError.new
|
|
63
|
-
assert_equal "
|
|
64
|
-
assert_equal "
|
|
71
|
+
assert_equal "Coaster::TestStandardError::SampleError", e.to_s
|
|
72
|
+
assert_equal "Coaster::TestStandardError::SampleError", e.message
|
|
65
73
|
assert_nil e.description
|
|
66
74
|
assert_nil e.desc
|
|
67
75
|
assert_equal 'Test sample error', e._translate
|
|
68
|
-
assert_equal 'Test sample error', e.user_message
|
|
76
|
+
assert_equal 'Test sample error (Coaster::TestStandardError::SampleError)', e.user_message
|
|
69
77
|
assert_equal 'Test this title', e.title
|
|
70
78
|
e = SampleError.new(beet: 'apple')
|
|
71
|
-
assert_equal "Test sample error
|
|
72
|
-
assert_equal "Test sample error
|
|
79
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.to_s
|
|
80
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.message
|
|
73
81
|
assert_nil e.description
|
|
74
82
|
assert_nil e.desc
|
|
75
83
|
assert_equal 'Test sample error', e._translate
|
|
76
|
-
assert_equal 'Test sample error', e.user_message
|
|
84
|
+
assert_equal 'Test sample error (Coaster::TestStandardError::SampleError)', e.user_message
|
|
77
85
|
assert_equal 'Test this title', e.title
|
|
78
86
|
e = SampleError.new('developer message')
|
|
79
|
-
assert_equal "
|
|
80
|
-
assert_equal "
|
|
87
|
+
assert_equal "developer message", e.to_s
|
|
88
|
+
assert_equal "developer message", e.message
|
|
81
89
|
assert_nil e.description
|
|
82
90
|
assert_nil e.desc
|
|
83
91
|
assert_equal 'Test sample error', e._translate
|
|
92
|
+
assert_equal 'Test sample error (developer message)', e.user_message
|
|
93
|
+
assert_equal 'Test this title', e.title
|
|
94
|
+
e = SampleError.new(desc: 'user message')
|
|
95
|
+
assert_equal "user message (Coaster::TestStandardError::SampleError)", e.to_s
|
|
96
|
+
assert_equal "user message (Coaster::TestStandardError::SampleError)", 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(m: 'developer message', desc: :translate)
|
|
103
|
+
assert_equal "Test sample error (developer message)", e.to_s
|
|
104
|
+
assert_equal "Test sample error (developer message)", e.message
|
|
105
|
+
assert_equal "Test sample error", e.description
|
|
106
|
+
assert_equal "Test sample error", e.desc
|
|
107
|
+
assert_equal 'Test sample error', e._translate
|
|
84
108
|
assert_equal 'Test sample error', e.user_message
|
|
85
109
|
assert_equal 'Test this title', e.title
|
|
86
110
|
e = SampleError.new(m: 'developer message', desc: 'user message')
|
|
87
|
-
assert_equal "user message
|
|
88
|
-
assert_equal "user message
|
|
111
|
+
assert_equal "user message (developer message)", e.to_s
|
|
112
|
+
assert_equal "user message (developer message)", e.message
|
|
89
113
|
assert_equal 'user message', e.description
|
|
90
114
|
assert_equal 'user message', e.desc
|
|
91
115
|
assert_equal 'user message', e._translate
|
|
92
116
|
assert_equal 'user message', e.user_message
|
|
93
117
|
assert_equal 'Test this title', e.title
|
|
94
118
|
e = SampleError.new(tkey: 'sample.interpolation', value: 'blah')
|
|
95
|
-
assert_equal "Sample Interpolation blah
|
|
96
|
-
assert_equal "Sample Interpolation blah
|
|
119
|
+
assert_equal "Sample Interpolation blah (Coaster::TestStandardError::SampleError)", e.to_s
|
|
120
|
+
assert_equal "Sample Interpolation blah (Coaster::TestStandardError::SampleError)", e.message
|
|
97
121
|
assert_nil e.description
|
|
98
122
|
assert_nil e.desc
|
|
99
123
|
assert_equal 'Sample Interpolation blah', e._translate
|
|
@@ -104,7 +128,7 @@ module Coaster
|
|
|
104
128
|
def test_message
|
|
105
129
|
raise SampleError, {m: 'beer is proof'}
|
|
106
130
|
rescue => e
|
|
107
|
-
assert_equal "Test sample error
|
|
131
|
+
assert_equal "Test sample error (beer is proof)", e.message
|
|
108
132
|
end
|
|
109
133
|
|
|
110
134
|
def test_attributes
|
|
@@ -124,21 +148,22 @@ module Coaster
|
|
|
124
148
|
assert_equal 'Coaster::TestStandardError::ExampleError', e.to_hash['type']
|
|
125
149
|
assert_equal 20, e.to_hash['status']
|
|
126
150
|
assert_equal 500, e.to_hash['http_status']
|
|
127
|
-
assert_equal "Test example error
|
|
151
|
+
assert_equal "Test example error (Coaster::TestStandardError::ExampleError) {Test sample error (Coaster::TestStandardError::SampleError)}", e.to_hash['message']
|
|
128
152
|
assert_equal 'rams', e.to_hash['cause']['frog']
|
|
129
153
|
assert_equal 'Coaster::TestStandardError::SampleError', e.to_hash['cause']['type']
|
|
130
154
|
assert_equal 10, e.to_hash['cause']['status']
|
|
131
155
|
assert_equal 500, e.to_hash['cause']['http_status']
|
|
132
|
-
assert_equal "Test sample error
|
|
156
|
+
assert_equal "Test sample error (Coaster::TestStandardError::SampleError)", e.to_hash['cause']['message']
|
|
133
157
|
end
|
|
134
158
|
|
|
135
159
|
def test_cause_attributes
|
|
136
160
|
begin
|
|
137
161
|
raise SampleError, {frog: 'rams'}
|
|
138
162
|
rescue => e
|
|
139
|
-
raise ExampleError, {wat: 'cha'}
|
|
163
|
+
raise ExampleError, {m: 'abc', wat: 'cha'}
|
|
140
164
|
end
|
|
141
165
|
rescue => e
|
|
166
|
+
assert_equal 'Test example error (abc) {Test sample error (Coaster::TestStandardError::SampleError)}', e.message
|
|
142
167
|
assert_equal 'rams', e.cause.attr['frog']
|
|
143
168
|
assert_equal 'rams', e.attr['frog']
|
|
144
169
|
assert_equal 'cha', e.attr['wat']
|
|
@@ -153,9 +178,7 @@ module Coaster
|
|
|
153
178
|
rescue => e
|
|
154
179
|
detail = <<-LOG
|
|
155
180
|
[Coaster::TestStandardError::ExampleError] status:20
|
|
156
|
-
MESSAGE: Test example error
|
|
157
|
-
Test sample error
|
|
158
|
-
Coaster::TestStandardError::SampleError
|
|
181
|
+
MESSAGE: Test example error (Coaster::TestStandardError::ExampleError) {Test sample error (Coaster::TestStandardError::SampleError)}
|
|
159
182
|
@fingerprint: []
|
|
160
183
|
@tags: {}
|
|
161
184
|
@level: \"error\"
|
|
@@ -163,8 +186,7 @@ module Coaster
|
|
|
163
186
|
@tkey: nil
|
|
164
187
|
@raven: {}
|
|
165
188
|
CAUSE: [Coaster::TestStandardError::SampleError] status:10
|
|
166
|
-
MESSAGE: Test sample error
|
|
167
|
-
Coaster::TestStandardError::SampleError
|
|
189
|
+
MESSAGE: Test sample error (Coaster::TestStandardError::SampleError)
|
|
168
190
|
@fingerprint: []
|
|
169
191
|
@tags: {}
|
|
170
192
|
@level: \"error\"
|
|
@@ -213,7 +235,7 @@ LOG
|
|
|
213
235
|
begin
|
|
214
236
|
root_cause_sample3
|
|
215
237
|
rescue => e
|
|
216
|
-
assert_equal "
|
|
238
|
+
assert_equal "a", e.root_cause.message
|
|
217
239
|
end
|
|
218
240
|
end
|
|
219
241
|
|
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.3.
|
|
4
|
+
version: 1.3.5
|
|
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-10-
|
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: i18n
|