dry-behaviour 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/lib/dry/behaviour/black_tie.rb +14 -7
- data/lib/dry/behaviour/version.rb +1 -1
- data/lib/dry/errors/not_implemented.rb +33 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68e9909166c5283d9505f7be6f541334aea5d161
|
4
|
+
data.tar.gz: 2319fcbbb2da7b56aff3825e44788d44da99a688
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd3f037341b4f6f2e28d9e4478d763fc6bd554d09e5be20be2ac08c2fad405be3a2ce8e45a273cdd0c6bbbf26efd8ee0abaf4edb6d48e4760c933ebaf54d1397
|
7
|
+
data.tar.gz: cea7c3a4b77dbc7cc4215e38b853c92d96670fe8677c771a2d1914b6e60293d163fc00d9bd3a60b97966849e5a7f025cb3b39c0b30afb933c62e25dfdafb4497
|
data/.travis.yml
CHANGED
@@ -24,7 +24,9 @@ module Dry
|
|
24
24
|
(instance_methods(false) - ims).each { |m| class_eval { module_function m } }
|
25
25
|
|
26
26
|
singleton_class.send :define_method, :method_missing do |method, *_args|
|
27
|
-
raise Dry::Protocol::NotImplemented.new(
|
27
|
+
raise Dry::Protocol::NotImplemented.new(
|
28
|
+
:method, inspect, method: method, self: self
|
29
|
+
)
|
28
30
|
end
|
29
31
|
|
30
32
|
singleton_class.send :define_method, :implementation_for do |receiver|
|
@@ -33,16 +35,21 @@ module Dry
|
|
33
35
|
end.reject(&:nil?).first
|
34
36
|
end
|
35
37
|
|
36
|
-
BlackTie.protocols[self].each do |method, *_| # FIXME: CHECK
|
38
|
+
BlackTie.protocols[self].each do |method, *_| # FIXME: CHECK ARITY HERE
|
37
39
|
singleton_class.send :define_method, method do |receiver = nil, *args|
|
38
40
|
impl = implementation_for(receiver)
|
39
|
-
raise Dry::Protocol::NotImplemented.new(
|
41
|
+
raise Dry::Protocol::NotImplemented.new(
|
42
|
+
:protocol, inspect,
|
43
|
+
method: method, receiver: receiver, args: args, self: self
|
44
|
+
) unless impl
|
40
45
|
begin
|
41
46
|
impl[method].(*args.unshift(receiver))
|
42
|
-
rescue
|
43
|
-
raise Dry::Protocol::NotImplemented.new(
|
44
|
-
|
45
|
-
|
47
|
+
rescue => e
|
48
|
+
raise Dry::Protocol::NotImplemented.new(
|
49
|
+
:nested, inspect,
|
50
|
+
cause: e,
|
51
|
+
method: method, receiver: receiver, args: args, impl: impl, self: self
|
52
|
+
)
|
46
53
|
end
|
47
54
|
end
|
48
55
|
end
|
@@ -1,15 +1,39 @@
|
|
1
1
|
module Dry
|
2
2
|
module Protocol
|
3
3
|
class NotImplemented < StandardError
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
attr_reader :proto, :details
|
5
|
+
|
6
|
+
def initialize(type, proto, **details)
|
7
|
+
@proto, @details = proto, details
|
8
|
+
|
9
|
+
@details[:message] =
|
10
|
+
case type
|
11
|
+
when :protocol
|
12
|
+
"Protocol “#{@proto}” is not implemented for “#{@details[:receiver].class}”."
|
13
|
+
when :method
|
14
|
+
"Protocol “#{@proto}” does not declare method “#{@details[:method]}”."
|
15
|
+
when :nested
|
16
|
+
"Protocol “#{@proto}” failed to invoke the implementation.\n" \
|
17
|
+
" ⮩ caused by “#{cause.class}” with a message\n" \
|
18
|
+
" ⮩ “#{cause.message}”\n" \
|
19
|
+
" ⮩ rescue this exception and inspect `NotImplemented#cause' for details."
|
20
|
+
else
|
21
|
+
"Protocol “#{proto}” is invalid."
|
22
|
+
end
|
23
|
+
|
24
|
+
super(@details[:message])
|
25
|
+
|
26
|
+
if @details[:cause]
|
27
|
+
set_backtrace(
|
28
|
+
@details[:cause].backtrace.reject do |line| # FIXME drop_while ??
|
29
|
+
line =~ %r[dry-behaviour/lib/dry/behaviour]
|
30
|
+
end
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def cause
|
36
|
+
@details[:cause] ||= super
|
13
37
|
end
|
14
38
|
end
|
15
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-behaviour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksei Matiushkin
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-10-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|