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 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: []