closed_loop 0.2.0 → 0.3.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: 37a10edd09b0eb4aa81900e216de4d23d28a9a873150023b031c88f2c92c4d28
4
- data.tar.gz: a0bab9ddd3e767fdaac03a5a802a8f5c484af48ca29adacb80aa263fdac09857
3
+ metadata.gz: 3ff1ecd4ed9a2bf4145dd0a74174f17323cce5aa80f23aaf4291de4870c74a61
4
+ data.tar.gz: '07286939fcee7c4a1519ae88dc862706eca84b27bf508e313af9253c34e89b12'
5
5
  SHA512:
6
- metadata.gz: 2cc9587676d05f6b16e26885dcddcf22bfd7e608164e7cdc5b4cb109d5c7c79b1af257ad15daafcea4116b5c315e334c3a067d05c4cf4b398680ded790e15e3d
7
- data.tar.gz: fdaf9e4dc643559f349e03aa38d47d5ab44037eb30125123bff1bdc6a1a14975ded883846ef53eb34832768536528ca2afb5533071f9b1c8291a145705f9e74b
6
+ metadata.gz: 6631a4bcdcc0a30e531e54d0ec843f09ea0b67f215a90c8447468770fdfab6ec19a333321c29f565e573d40d87e9fbfa22f360d3fcc834819674a41fceb3814c
7
+ data.tar.gz: 76290f04f6f710986fdc50120c3817fb7196168cf1dc79bd2bc767157bf53671ad05f146ccba071e0b8820b91e43e1abfb5be7861dd3ae7b09f223075d08502c
data/Example.md CHANGED
@@ -77,11 +77,11 @@ end
77
77
  ```Ruby
78
78
  # In controller / service / interactor / background worker
79
79
 
80
- OrderMachine.insantce.transition!(order, current_user, to: :parcel__received)
80
+ OrderMachine.insantce.transit!(order, current_user, to: :parcel__received)
81
81
 
82
82
  # invoke extra methods in the the same transition & ActiveRecord transaction:
83
83
 
84
- OrderMachine.insantce.transition!(order, current_user, to: :parcel__received) do
84
+ OrderMachine.insantce.transit!(order, current_user, to: :parcel__received) do
85
85
  order.items.each { |item| '#...' }
86
86
  end
87
87
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- closed_loop (0.1.0)
4
+ closed_loop (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -19,7 +19,7 @@ module ClosedLoop
19
19
  configuration.transitions.select { |transition| transition.available?(target, user) }
20
20
  end
21
21
 
22
- def transition!(target, user, to:, &block)
22
+ def transit!(target, user, to:, &block)
23
23
  available_transition = available_transitions(target, user).find do |transition|
24
24
  transition.from == target.status.to_sym && transition.to == to.to_sym
25
25
  end
@@ -31,6 +31,16 @@ module ClosedLoop
31
31
  end
32
32
  end
33
33
 
34
+ def transit(target, user, to:, attributes: {}, &block)
35
+ available_transition = available_transitions(target, user).find do |transition|
36
+ transition.from == target.status.to_sym && transition.to == to.to_sym
37
+ end
38
+
39
+ if available_transition&.available?(target, user)
40
+ available_transition.perform(target, user, attributes, &block)
41
+ end
42
+ end
43
+
34
44
  def resolve_role(*args)
35
45
  self.class.const_get('RoleResolver').new(*args).call
36
46
  end
@@ -37,6 +37,26 @@ module ClosedLoop
37
37
 
38
38
  @track_times_used = times_used + 1
39
39
  end
40
+
41
+ def perform(target, user, attributes)
42
+ target.class.transaction do
43
+ target.assign_attributes(attributes)
44
+ target.status = to
45
+ target.last_transition_at = Time.current if target.respond_to?(:last_transition_at)
46
+
47
+ if target.save
48
+ proc&.call(target, user, transition: self)
49
+
50
+ machine.configuration.select_callbacks_for(self).each do |callback|
51
+ callback.perform!(target, user, transition: self)
52
+ end
53
+
54
+ yield(target, user, transition: self) if block_given?
55
+ end
56
+ end
57
+
58
+ @track_times_used = times_used + 1
59
+ end
40
60
  end
41
61
  end
42
62
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClosedLoop
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: closed_loop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vilius Luneckas