handleit 1.1.5 → 1.2.5

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/handle.rb +12 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b181aac19ab3616dd260f8e106676f6a0328f8a68f1305e03c3a9a0b20fca969
4
- data.tar.gz: 6f7062382e909186b0c945a96e2eef7fd6d8cff574b31317d51d7288e9f11a4a
3
+ metadata.gz: c980fa58183dc34defe868759209c22ffc643e34b817d172b9a85cc103e93710
4
+ data.tar.gz: 560d86343cf2073f1c7cb05d3a1377bcd240f93fb2ac9d5492cf3a0b644b2edc
5
5
  SHA512:
6
- metadata.gz: 648eceed1b5e284cc92c5f58a05c23217fa9e61d311d8bee980200af50985c2b4a39d567992b14b35f070bd36291610e8d0fd3af7c596efea0374f2fc89edb42
7
- data.tar.gz: 45f7d12218e6df0da3b3cc1bb9f72961f839912b2dbde25e667ce7c9dc3e40c05a0601549887fe98012ce5df126e678fdef01f2a2b7def0e4b9db4feea6e967d
6
+ metadata.gz: 419127c3a8fbc102f2418604919982d7583272ae07b7e01475c782a0819d23aa92d2d71e2f309a1de5f10d541210b2807b2a1ecb74788031dc96b4491c0ff9b1
7
+ data.tar.gz: 255a3dd89c13bf316cdf1f3bddc5790112ecc5203f09faac75b333adb13f2c24685dbcf66f64c7e9feddf2ec181f92c6966946f0678c902eb7dad7516b38268b
data/lib/handle.rb CHANGED
@@ -13,16 +13,25 @@ class Handle
13
13
  validate(options)
14
14
 
15
15
  @result = OpenStruct.new return: yield, success: true, error: nil
16
+ @returns_pool = []
16
17
  self
17
18
  rescue StandardError => e
18
19
  error_handler(e)
19
20
  end
20
21
 
21
- def with
22
- @result.return = yield(@result.return, **options = {}) if success?
22
+ def with(args={})
23
+ if success?
24
+ @returns_pool << yield(@result.return, **options = {})
25
+ @result.return = @returns_pool.last
26
+ end
23
27
  self
24
28
  rescue StandardError => e
25
- error_handler(e)
29
+ if args[:on_fail] == :rollback
30
+ @result.return = @returns_pool.last
31
+ self
32
+ else
33
+ error_handler(e)
34
+ end
26
35
  end
27
36
 
28
37
  def on_fail
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handleit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Saltykov
@@ -40,5 +40,5 @@ rubygems_version: 3.1.4
40
40
  signing_key:
41
41
  specification_version: 4
42
42
  summary: Handleit - promise like way of handling logic execution with ability of chaining
43
- handlers like in Elexir pipelining approach
43
+ handlers like in js promise, plus some useful additions like guard and rollback
44
44
  test_files: []