servactory 1.6.9 → 1.6.10

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: 2c500354cf4e4fdb64d43928419b2d5d90eb99a7f4075bb7b92c78fa0f498748
4
- data.tar.gz: ffd1d27087d1f5ad5457738c20cda5cb9fa73821fca05cc9cf3161c0c035fb71
3
+ metadata.gz: 247691253c0f26610c8586f31425e2ac33f4b137f67ba68642affb4e3411d306
4
+ data.tar.gz: 5050386caa9eaa939eb637f177978085bf02e5a035741e9c372216bc9886276e
5
5
  SHA512:
6
- metadata.gz: '039459dc8df65093417fe4b6703783e43ace1c401f86b9b067d5ce3aeeebd0f64866561904a15ea299c2be15224fb66a1fe71dfc8477d7e0f12458f086c09b8a'
7
- data.tar.gz: 794a191acdc4f2d94d8b827d05c1994a4e644a2124ac2e8fc83106abcfdeb80b35fc069a413c89cf98fc43b22b5f343bb96070d38ed05ffd3f7123d741fc3256
6
+ metadata.gz: bd2eea84309d84773e035600d143183add63818e7e77ba985d79f7b7b36c4caae9b22f8dc58422a3e2ed7e4c635a09d2beed2f465e639c3c87739034354ffe9a
7
+ data.tar.gz: a4e7919863596451fa78fdcca4e763906a65d3dd8f5f4b8fe041c98ef7ea3de5a64db7bcdcc059a447ba926810de275ddcf3c3cd6a6315ab9d4de571630852fb
@@ -38,6 +38,12 @@ module Servactory
38
38
  @current_stage.rollback = rollback
39
39
  end
40
40
 
41
+ def only_if(condition)
42
+ return if @current_stage.blank?
43
+
44
+ @current_stage.condition = condition
45
+ end
46
+
41
47
  def make(name, position: nil, **options)
42
48
  position = position.presence || next_position
43
49
 
@@ -5,12 +5,14 @@ module Servactory
5
5
  class Stage
6
6
  attr_accessor :position,
7
7
  :wrapper,
8
- :rollback
8
+ :rollback,
9
+ :condition
9
10
 
10
- def initialize(position:, wrapper: nil, rollback: nil)
11
+ def initialize(position:, wrapper: nil, rollback: nil, condition: nil)
11
12
  @position = position
12
13
  @wrapper = wrapper
13
14
  @rollback = rollback
15
+ @condition = condition
14
16
  end
15
17
 
16
18
  def next_method_position
@@ -33,6 +33,8 @@ module Servactory
33
33
  end
34
34
 
35
35
  def call_stage(stage)
36
+ return if unnecessary_for_stage?(stage)
37
+
36
38
  wrapper = stage.wrapper
37
39
  rollback = stage.rollback
38
40
  methods = stage.methods.sorted_by_position
@@ -52,13 +54,23 @@ module Servactory
52
54
 
53
55
  def call_methods(methods)
54
56
  methods.each do |make_method|
55
- next if unnecessary_for?(make_method)
57
+ next if unnecessary_for_make?(make_method)
56
58
 
57
59
  context.send(make_method.name)
58
60
  end
59
61
  end
60
62
 
61
- def unnecessary_for?(make_method)
63
+ def unnecessary_for_stage?(stage)
64
+ condition = stage.condition
65
+ # is_condition_opposite = stage.is_condition_opposite
66
+
67
+ result = prepare_condition_for(condition) # rubocop:disable Style/RedundantAssignment
68
+
69
+ # is_condition_opposite ? !result : result
70
+ result
71
+ end
72
+
73
+ def unnecessary_for_make?(make_method)
62
74
  condition = make_method.condition
63
75
  is_condition_opposite = make_method.is_condition_opposite
64
76
 
@@ -4,7 +4,7 @@ module Servactory
4
4
  module VERSION
5
5
  MAJOR = 1
6
6
  MINOR = 6
7
- PATCH = 9
7
+ PATCH = 10
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH].join(".")
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servactory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.9
4
+ version: 1.6.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sokolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-11 00:00:00.000000000 Z
11
+ date: 2023-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport