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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20440d5b3580056507598e8506d9a6e8e26623601dc07ed6cfc443ee2e4dee04
4
- data.tar.gz: 981844bd5ede5b4b889ed19ee5ca16cc2c6cdcaa898f166bc3e3132d8034e962
3
+ metadata.gz: 812ea6d0360b4161fba6c6fcd38d409715900ff08cdd57f3d4cf4df5df2de900
4
+ data.tar.gz: b3b95cafabb8381687d8a033f4c14b9d57164b101236c61a4faa960a5b73890b
5
5
  SHA512:
6
- metadata.gz: d7207fd5bd4c1447f4686deff93bddd8d9802722accaa37118979afd0fc46afe75f616a73ffa24628ccfb111c3121ff92319346484c914931f753cce4102059f
7
- data.tar.gz: 628cd5d0416be38cdfe79a7a50473c0b59944af35d3b6c01264562dfc0d7f11287d13908ef1c63d9ddc30f870aefdf1a8327c38765c3e246aea7db9d8c28aa8c
6
+ metadata.gz: 737c8f8dfd54bef81cb284c5bf0fceb02b8ff53df4b9fa31231bbd78d1b9f86bcf83f34e60befce7ed87d368843b63e35de73de16a6578aae5f09cc1a60d5f56
7
+ data.tar.gz: fffe7ce4459bd5ea399d4103a19ed561955b4e5c241a407c772d4f03669cf9328f108e5fbf704c664dcafd06ccbcdf826b50235e870e7f8522a40f0004ef3e2e
@@ -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
@@ -2,4 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'simplecov', require: false, group: :test
5
+ gem "rake", "~> 12.3"
6
+ gem "minitest", "~> 5.11"
7
+ gem "pry-byebug"
8
+ gem "simplecov", require: false, group: :test
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
- # Somewhere else
23
-
24
- SomeClass.new.direct(:success){|something, *data|
68
+ DeferrableClass.new.direct(:success){|instance, *data|
25
69
  STDOUT.puts data
26
- }.direct(:failure){|something, *errors|
70
+ }.direct(:failure){|instance, *errors|
27
71
  STDERR.puts errors
28
72
  }.save
29
73
  ```
@@ -22,7 +22,4 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "concurrent-ruby", ">= 1.0"
25
-
26
- spec.add_development_dependency "rake", "~> 12.3"
27
- spec.add_development_dependency "minitest", "~> 5.11"
28
25
  end
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Direct
2
- VERSION = "1.2.1"
2
+ VERSION = "2.0.0"
3
3
  end
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: 1.2.1
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: 2019-03-07 00:00:00.000000000 Z
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
- rubyforge_project:
98
- rubygems_version: 2.7.6
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: []