direct 1.2.1 → 2.0.0
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/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: []
|