direct 1.2.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +4 -1
- data/README.md +48 -4
- data/direct.gemspec +0 -3
- data/lib/direct/executable.rb +2 -2
- data/lib/direct/version.rb +1 -1
- metadata +6 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 812ea6d0360b4161fba6c6fcd38d409715900ff08cdd57f3d4cf4df5df2de900
|
4
|
+
data.tar.gz: b3b95cafabb8381687d8a033f4c14b9d57164b101236c61a4faa960a5b73890b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 737c8f8dfd54bef81cb284c5bf0fceb02b8ff53df4b9fa31231bbd78d1b9f86bcf83f34e60befce7ed87d368843b63e35de73de16a6578aae5f09cc1a60d5f56
|
7
|
+
data.tar.gz: fffe7ce4459bd5ea399d4103a19ed561955b4e5c241a407c772d4f03669cf9328f108e5fbf704c664dcafd06ccbcdf826b50235e870e7f8522a40f0004ef3e2e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## Version 2.0.0
|
2
|
+
|
3
|
+
A bug in deferred execution did not return the success/failure results. Fixes test names that cause a collision and incorrect test scenarios.
|
4
|
+
|
1
5
|
## Version 1.2.1
|
2
6
|
|
3
7
|
Provide an 'object:' to a Direct.defer or Direct.strict_defer to be sent as the third parameter in the executed blocks.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,53 @@ outside of your objects and just tell them what to do.
|
|
8
8
|
## Usage
|
9
9
|
|
10
10
|
```ruby
|
11
|
+
require 'direct'
|
11
12
|
class SomeClass
|
13
|
+
def procedure
|
14
|
+
Direct.defer(object: self){
|
15
|
+
# return a truthy or falsey object
|
16
|
+
# to execute success or failure blocks
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
SomeClass.new.procedure.success{ |deferred_object, result, object|
|
22
|
+
puts "it worked!"
|
23
|
+
}.failure { |deferred_object, result, object|
|
24
|
+
puts "it failed :-("
|
25
|
+
}.execute
|
26
|
+
```
|
27
|
+
|
28
|
+
If the example `procedure` method above raises an exception instead of just returning a falsey object, the `failure` block will be run.
|
29
|
+
|
30
|
+
But you can specify what to do when an exception is raised instead:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
SomeClass.new.procedure.success{ |deferred_object, result, object|
|
34
|
+
puts "it worked!"
|
35
|
+
}.failure { |deferred_object, result, object|
|
36
|
+
puts "it failed :-("
|
37
|
+
}.exception{ |deferred_object, exception, object|
|
38
|
+
puts "Oh no! An exception was raised!"
|
39
|
+
}.execute
|
40
|
+
```
|
41
|
+
|
42
|
+
By default it will handle `StandardError` execeptions but you can be more specific if you like:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
SomeClass.new.procedure.success{ |deferred_object, result, object|
|
46
|
+
puts "it worked!"
|
47
|
+
}.failure { |deferred_object, result, object|
|
48
|
+
puts "it failed :-("
|
49
|
+
}.exception(SomeLibrary::SomeSpecialError){ |deferred_object, exception, object|
|
50
|
+
puts "Oh no! An exception was raised!"
|
51
|
+
}.execute
|
52
|
+
```
|
53
|
+
|
54
|
+
The `defer` method uses built-in classes but you can build your own to manage executing named blocks
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
class DeferrableClass
|
12
58
|
include Direct
|
13
59
|
|
14
60
|
def save
|
@@ -19,11 +65,9 @@ class SomeClass
|
|
19
65
|
end
|
20
66
|
end
|
21
67
|
|
22
|
-
|
23
|
-
|
24
|
-
SomeClass.new.direct(:success){|something, *data|
|
68
|
+
DeferrableClass.new.direct(:success){|instance, *data|
|
25
69
|
STDOUT.puts data
|
26
|
-
}.direct(:failure){|
|
70
|
+
}.direct(:failure){|instance, *errors|
|
27
71
|
STDERR.puts errors
|
28
72
|
}.save
|
29
73
|
```
|
data/direct.gemspec
CHANGED
data/lib/direct/executable.rb
CHANGED
@@ -104,9 +104,9 @@ module Direct
|
|
104
104
|
def value
|
105
105
|
result = execution.()
|
106
106
|
if result
|
107
|
-
as_directed(:success, result, object)
|
107
|
+
as_directed(:success, result, object) || result
|
108
108
|
else
|
109
|
-
as_directed(:failure, result, object)
|
109
|
+
as_directed(:failure, result, object) || result
|
110
110
|
end
|
111
111
|
rescue *exception_classes => exception
|
112
112
|
run_exception_block(exception)
|
data/lib/direct/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: direct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Gay
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -24,34 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '12.3'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '12.3'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5.11'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.11'
|
55
27
|
description: Direct objects to perform arbitrary blocks by name
|
56
28
|
email:
|
57
29
|
- jim@saturnflyer.com
|
@@ -79,7 +51,7 @@ homepage: https://github.com/saturnflyer/direct
|
|
79
51
|
licenses:
|
80
52
|
- MIT
|
81
53
|
metadata: {}
|
82
|
-
post_install_message:
|
54
|
+
post_install_message:
|
83
55
|
rdoc_options: []
|
84
56
|
require_paths:
|
85
57
|
- lib
|
@@ -94,9 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
66
|
- !ruby/object:Gem::Version
|
95
67
|
version: '0'
|
96
68
|
requirements: []
|
97
|
-
|
98
|
-
|
99
|
-
signing_key:
|
69
|
+
rubygems_version: 3.1.2
|
70
|
+
signing_key:
|
100
71
|
specification_version: 4
|
101
72
|
summary: Direct objects to perform arbitrary blocks by name
|
102
73
|
test_files: []
|