kinetic_cafe_error 1.4.1 → 1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/History.rdoc +19 -0
- data/Rakefile +2 -0
- data/app/controllers/concerns/kinetic_cafe/error_handler.rb +1 -1
- data/config/i18n-tasks.yml.erb +8 -0
- data/lib/kinetic_cafe/error.rb +1 -1
- data/lib/kinetic_cafe/error_module.rb +37 -6
- data/lib/kinetic_cafe/error_rspec.rb +4 -4
- data/test/test_kinetic_cafe_error.rb +30 -1
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 685467959030041afef309c2d80dee6de147f013
|
4
|
+
data.tar.gz: 0a56fd7578757bb16eabed95380d65a4e6b6e9e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff170e4595486ceb5b125626acaa21397e0ea8663d8d86e27444dc058ca3b7584c93b1ed6929c2e6d80d6e351a4fdbc26b39712d93ac44463127b66055a7e430
|
7
|
+
data.tar.gz: c709887413f3535270948786c73fb5641a7038a8d4363adf83afc2151a752f046502d78bb5feb28ec17adfa1d1a42be86e0a746d67e86278b6c06d9bbcc46d3f
|
data/.travis.yml
CHANGED
@@ -6,8 +6,7 @@ rvm:
|
|
6
6
|
- 2.0.0
|
7
7
|
- 1.9.3
|
8
8
|
- jruby-1.7
|
9
|
-
- jruby-9.0.0.0
|
10
|
-
- jruby-19mode
|
9
|
+
- jruby-9.0.0.0
|
11
10
|
- jruby-head
|
12
11
|
- ruby-head
|
13
12
|
- rbx-2
|
@@ -15,7 +14,6 @@ matrix:
|
|
15
14
|
allow_failures:
|
16
15
|
- rvm: rbx-2
|
17
16
|
- rvm: jruby-head
|
18
|
-
- rvm: jruby-9.0.0.0.pre2
|
19
17
|
- rvm: ruby-head
|
20
18
|
gemfile:
|
21
19
|
- Gemfile
|
data/History.rdoc
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
=== 1.5 / 2015-07-28
|
2
|
+
|
3
|
+
* 2 bug fixes:
|
4
|
+
|
5
|
+
* Handle error causes correctly for Ruby 2.1 or later, where <tt>raise
|
6
|
+
Exception, cause: RuntimeError.new</tt> does not pass the +cause+ the
|
7
|
+
exception constructor, but it still sets the cause correctly on the
|
8
|
+
exception. These changes make this correct for both +raise+ construction
|
9
|
+
and normal construction.
|
10
|
+
|
11
|
+
* The RSpec helpers did not work because they spelled the class +Rspec+, not
|
12
|
+
+RSpec+. This has been fixed.
|
13
|
+
|
14
|
+
* 2 development changes:
|
15
|
+
|
16
|
+
* Fixed some test typos.
|
17
|
+
|
18
|
+
* Add i18n-tasks for CSV exports.
|
19
|
+
|
1
20
|
=== 1.4.1 / 2015-07-08
|
2
21
|
|
3
22
|
* 1 bug fix
|
data/Rakefile
CHANGED
@@ -35,6 +35,8 @@ spec = Hoe.spec 'kinetic_cafe_error' do
|
|
35
35
|
extra_dev_deps << ['minitest-stub-const', '~> 0.4']
|
36
36
|
extra_dev_deps << ['rack-test', '~> 0.6']
|
37
37
|
extra_dev_deps << ['rake', '~> 10.0']
|
38
|
+
extra_dev_deps << ['i18n-tasks', '~> 0.8']
|
39
|
+
extra_dev_deps << ['i18n-tasks-csv', '~> 1.0']
|
38
40
|
extra_dev_deps << ['rubocop', '~> 0.32']
|
39
41
|
extra_dev_deps << ['simplecov', '~> 0.7']
|
40
42
|
extra_dev_deps << ['coveralls', '~> 0.8']
|
@@ -28,7 +28,7 @@ module KineticCafe::ErrorHandler
|
|
28
28
|
def kinetic_cafe_error_handler_log_locale(locale = nil)
|
29
29
|
self.__kinetic_cafe_error_handler_log_locale = locale if locale
|
30
30
|
self.__kinetic_cafe_error_handler_log_locale ||= I18n.default_locale
|
31
|
-
|
31
|
+
__kinetic_cafe_error_handler_log_locale
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
data/config/i18n-tasks.yml.erb
CHANGED
@@ -109,3 +109,11 @@ ignore_eq_base:
|
|
109
109
|
## Ignore these keys completely:
|
110
110
|
# ignore:
|
111
111
|
# - kaminari.*
|
112
|
+
|
113
|
+
<% require 'i18n-tasks-csv' %>
|
114
|
+
|
115
|
+
csv:
|
116
|
+
export:
|
117
|
+
- tmp/i18n-export/kinetic_cafe_error.csv
|
118
|
+
import:
|
119
|
+
- tmp/i18n-export/kinetic_cafe_error.csv
|
data/lib/kinetic_cafe/error.rb
CHANGED
@@ -25,7 +25,7 @@ module KineticCafe # :nodoc:
|
|
25
25
|
# rescue clause and handled there, as is shown in the included
|
26
26
|
# KineticCafe::ErrorHandler controller concern for Rails.
|
27
27
|
class Error < ::StandardError
|
28
|
-
VERSION = '1.
|
28
|
+
VERSION = '1.5' # :nodoc:
|
29
29
|
|
30
30
|
# Get the KineticCafe::Error functionality.
|
31
31
|
include KineticCafe::ErrorModule
|
@@ -9,8 +9,25 @@ module KineticCafe # :nodoc:
|
|
9
9
|
# Extra data relevant to recipients of the exception, provided on
|
10
10
|
# construction.
|
11
11
|
attr_reader :extra
|
12
|
-
|
13
|
-
|
12
|
+
##
|
13
|
+
# :attr_reader:
|
14
|
+
# The exception that caused this exception. Provided on exception
|
15
|
+
# construction or automatically through Ruby’s standard exception
|
16
|
+
# mechanism.
|
17
|
+
def cause
|
18
|
+
unless @initialized_cause
|
19
|
+
begin
|
20
|
+
initialize_cause(super) if !@initialized_cause && super
|
21
|
+
rescue NoMethodError
|
22
|
+
# We are suppressing this error because Exception#cause was
|
23
|
+
# implemented in Ruby 2.1.
|
24
|
+
@initialized_cause = true
|
25
|
+
@cause = nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
@cause
|
30
|
+
end
|
14
31
|
|
15
32
|
# Create a new error with the given parameters.
|
16
33
|
#
|
@@ -25,7 +42,8 @@ module KineticCafe # :nodoc:
|
|
25
42
|
# +i18n_params+:: The parameters to be sent to I18n.translate with the
|
26
43
|
# #i18n_key.
|
27
44
|
# +cause+:: The exception that caused this error. Used to wrap an earlier
|
28
|
-
# exception.
|
45
|
+
# exception. This is only necessary for Ruby before 2.1 or when
|
46
|
+
# directly initializing the exception.
|
29
47
|
# +extra+:: Extra data to be returned in the API representation of this
|
30
48
|
# exception.
|
31
49
|
# +query+:: A hash of parameters added to +i18n_params+, typically from
|
@@ -53,14 +71,13 @@ module KineticCafe # :nodoc:
|
|
53
71
|
@status = options.delete(:status) || default_status
|
54
72
|
@i18n_params = options.delete(:i18n_params) || {}
|
55
73
|
@extra = options.delete(:extra)
|
56
|
-
@cause = options.delete(:cause)
|
57
74
|
|
58
|
-
@
|
75
|
+
@initialized_cause = false
|
76
|
+
initialize_cause(options.delete(:cause)) if options.key?(:cause)
|
59
77
|
|
60
78
|
query = options.delete(:query)
|
61
79
|
@i18n_params.merge!(query: stringify(query)) if query
|
62
80
|
@i18n_params.merge!(options)
|
63
|
-
@i18n_params.freeze
|
64
81
|
end
|
65
82
|
|
66
83
|
# The message associated with this exception. If not provided, defaults to
|
@@ -161,6 +178,20 @@ module KineticCafe # :nodoc:
|
|
161
178
|
"cause=#{cause}>"
|
162
179
|
end
|
163
180
|
|
181
|
+
private
|
182
|
+
|
183
|
+
def initialize_cause(cause)
|
184
|
+
return if cause.nil?
|
185
|
+
|
186
|
+
unless cause.kind_of? Exception
|
187
|
+
fail ArgumentError, 'cause must be an Exception'
|
188
|
+
end
|
189
|
+
|
190
|
+
@initialized_cause = true
|
191
|
+
@cause = cause
|
192
|
+
@i18n_params.update(cause: @cause.message)
|
193
|
+
end
|
194
|
+
|
164
195
|
class << self
|
165
196
|
##
|
166
197
|
# The base for I18n key resolution. Defaults to 'kcerrors'.
|
@@ -5,8 +5,8 @@ module KineticCafe
|
|
5
5
|
# these with:
|
6
6
|
#
|
7
7
|
# require 'kinetic_cafe/error_rspec'
|
8
|
-
#
|
9
|
-
# c.include KineticCafe::
|
8
|
+
# RSpec.configure do |c|
|
9
|
+
# c.include KineticCafe::ErrorRSpec
|
10
10
|
# end
|
11
11
|
#
|
12
12
|
# +be_json_for+:: Verifies that the expected value is a JSON representation
|
@@ -20,8 +20,8 @@ module KineticCafe
|
|
20
20
|
#
|
21
21
|
# +be_kc_error_html+:: Verifies that the rendered HTML matches the output of
|
22
22
|
# KineticCafe::Error.
|
23
|
-
module
|
24
|
-
extend ::
|
23
|
+
module ErrorRSpec
|
24
|
+
extend ::RSpec::Matchers::DSL
|
25
25
|
|
26
26
|
matcher :be_json_for do |expected|
|
27
27
|
match do |actual|
|
@@ -13,7 +13,7 @@ describe KineticCafe::Error do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
describe '#
|
16
|
+
describe '#message and #i18n_message' do
|
17
17
|
it 'returns key/params if I18n.translate is not defined' do
|
18
18
|
Object.stub_remove_const(:I18n) do
|
19
19
|
assert_equal [ 'kcerrors.error', {} ], exception.i18n_message
|
@@ -145,4 +145,33 @@ describe KineticCafe::Error do
|
|
145
145
|
assert_empty KineticCafe::Error.i18n_params
|
146
146
|
end
|
147
147
|
end
|
148
|
+
|
149
|
+
describe 'handles causing exceptions' do
|
150
|
+
before do
|
151
|
+
begin
|
152
|
+
begin
|
153
|
+
fail 'causing'
|
154
|
+
rescue => ex
|
155
|
+
@causing_exception = ex
|
156
|
+
raise KineticCafe::Error, cause: @causing_exception,
|
157
|
+
message: 'wrapping'
|
158
|
+
end
|
159
|
+
rescue => ex
|
160
|
+
@wrapping_exception = ex
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'captures the causting exception' do
|
165
|
+
refute_nil @wrapping_exception.cause, 'No exception captured'
|
166
|
+
assert_equal @causing_exception, @wrapping_exception.cause
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'puts the cause message in i18n_params when the cause is requested' do
|
170
|
+
refute_nil @wrapping_exception.cause, 'No exception captured'
|
171
|
+
assert_equal(
|
172
|
+
{ cause: 'causing' },
|
173
|
+
@wrapping_exception.instance_variable_get(:@i18n_params)
|
174
|
+
)
|
175
|
+
end
|
176
|
+
end
|
148
177
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kinetic_cafe_error
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Ziegler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -206,6 +206,34 @@ dependencies:
|
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '10.0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: i18n-tasks
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0.8'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0.8'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: i18n-tasks-csv
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '1.0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '1.0'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: rubocop
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -343,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
343
371
|
version: '0'
|
344
372
|
requirements: []
|
345
373
|
rubyforge_project:
|
346
|
-
rubygems_version: 2.4.
|
374
|
+
rubygems_version: 2.4.8
|
347
375
|
signing_key:
|
348
376
|
specification_version: 4
|
349
377
|
summary: kinetic_cafe_error provides an API-smart error base class and a DSL for defining
|