decouplio 1.0.0alpha3 → 1.0.0alpha7
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 +4 -4
- data/.circleci/config.yml +11 -1
- data/.rubocop.yml +6 -0
- data/.ruby-version +1 -1
- data/README.md +2 -17
- data/decouplio.gemspec +4 -4
- data/lib/decouplio/action.rb +13 -3
- data/lib/decouplio/composer.rb +24 -3
- data/lib/decouplio/const/doby_aide_options.rb +1 -0
- data/lib/decouplio/const/error_messages.rb +9 -0
- data/lib/decouplio/const/step_options.rb +16 -0
- data/lib/decouplio/default_error_handler.rb +21 -6
- data/lib/decouplio/errors/execution_error.rb +20 -0
- data/lib/decouplio/errors/step_is_not_defined_for_pass_error.rb +27 -0
- data/lib/decouplio/logic_dsl.rb +52 -3
- data/lib/decouplio/options_validator.rb +46 -10
- data/lib/decouplio/steps/base_resq.rb +13 -3
- data/lib/decouplio/steps/service_fail.rb +4 -2
- data/lib/decouplio/steps/service_pass.rb +4 -2
- data/lib/decouplio/steps/service_step.rb +4 -2
- data/lib/decouplio/version.rb +1 -1
- metadata +14 -39
- data/docs/_config.yml +0 -1
- data/docs/aide.rb +0 -59
- data/docs/benchmarks.md +0 -1
- data/docs/context.md +0 -74
- data/docs/context.rb +0 -62
- data/docs/doby.rb +0 -38
- data/docs/doby_aide.md +0 -208
- data/docs/error_store.md +0 -347
- data/docs/error_store.rb +0 -202
- data/docs/fail.md +0 -1159
- data/docs/fail.rb +0 -859
- data/docs/index.md +0 -25
- data/docs/inner_action.md +0 -63
- data/docs/inner_action.rb +0 -43
- data/docs/logic_block.md +0 -29
- data/docs/octo.md +0 -326
- data/docs/octo.rb +0 -164
- data/docs/pass.md +0 -309
- data/docs/pass.rb +0 -213
- data/docs/quick_start.md +0 -71
- data/docs/quick_start.rb +0 -38
- data/docs/resq.md +0 -263
- data/docs/resq.rb +0 -176
- data/docs/step.md +0 -885
- data/docs/step.rb +0 -627
- data/docs/step_as_a_service.md +0 -123
- data/docs/step_as_a_service.rb +0 -77
- data/docs/wrap.md +0 -240
- data/docs/wrap.rb +0 -137
data/docs/pass.md
DELETED
@@ -1,309 +0,0 @@
|
|
1
|
-
# Pass
|
2
|
-
|
3
|
-
`pass` is the step type that always moves to success track `logic` steps
|
4
|
-
|
5
|
-
## Signature
|
6
|
-
|
7
|
-
```ruby
|
8
|
-
pass(step_name, **options)
|
9
|
-
```
|
10
|
-
|
11
|
-
## Behavior
|
12
|
-
|
13
|
-
- when step method(`#pass_one`) returns truthy or falsy value then it goes to success track(`step_two` step)
|
14
|
-
|
15
|
-
<details><summary><b>EXAMPLE (CLICK ME)</b></summary>
|
16
|
-
<p>
|
17
|
-
|
18
|
-
```ruby
|
19
|
-
require 'decouplio'
|
20
|
-
|
21
|
-
class SomeAction < Decouplio::Action
|
22
|
-
logic do
|
23
|
-
pass :pass_one
|
24
|
-
step :step_two
|
25
|
-
fail :fail_one
|
26
|
-
end
|
27
|
-
|
28
|
-
def pass_one(param_for_pass:, **)
|
29
|
-
ctx[:pass_one] = param_for_pass
|
30
|
-
end
|
31
|
-
|
32
|
-
def step_two(**)
|
33
|
-
ctx[:step_two] = 'Success'
|
34
|
-
end
|
35
|
-
|
36
|
-
def fail_one(**)
|
37
|
-
ctx[:fail_one] = 'Failure'
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
pass_success = SomeAction.call(param_for_pass: true)
|
42
|
-
pass_failure = SomeAction.call(param_for_pass: false)
|
43
|
-
|
44
|
-
pass_success # =>
|
45
|
-
# Result: success
|
46
|
-
|
47
|
-
# Railway Flow:
|
48
|
-
# pass_one -> step_two
|
49
|
-
|
50
|
-
# Context:
|
51
|
-
# {:param_for_pass=>true, :pass_one=>true, :step_two=>"Success"}
|
52
|
-
|
53
|
-
# Errors:
|
54
|
-
# {}
|
55
|
-
|
56
|
-
pass_failure # =>
|
57
|
-
# Result: success
|
58
|
-
|
59
|
-
# Railway Flow:
|
60
|
-
# pass_one -> step_two
|
61
|
-
|
62
|
-
# Context:
|
63
|
-
# {:param_for_pass=>false, :pass_one=>false, :step_two=>"Success"}
|
64
|
-
|
65
|
-
# Errors:
|
66
|
-
# {}
|
67
|
-
```
|
68
|
-
|
69
|
-
```mermaid
|
70
|
-
flowchart LR
|
71
|
-
1(start)-->2(pass_one success);
|
72
|
-
1(start)-->3(pass_one failure);
|
73
|
-
2(pass_one success)-->|success track|4(step_two);
|
74
|
-
3(pass_one failure)-->|success track|4(step_two);
|
75
|
-
4(step_two)-->|success track|5(finish_success)
|
76
|
-
```
|
77
|
-
|
78
|
-
</p>
|
79
|
-
</details>
|
80
|
-
|
81
|
-
***
|
82
|
-
|
83
|
-
## Options
|
84
|
-
|
85
|
-
### if: condition method name
|
86
|
-
Can be used in case if for some reason step shouldn't be executed
|
87
|
-
|
88
|
-
<details><summary><b>EXAMPLE (CLICK ME)</b></summary>
|
89
|
-
<p>
|
90
|
-
|
91
|
-
```ruby
|
92
|
-
require 'decouplio'
|
93
|
-
|
94
|
-
class SomeActionIfCondition < Decouplio::Action
|
95
|
-
logic do
|
96
|
-
step :step_one
|
97
|
-
pass :pass_one, if: :some_condition?
|
98
|
-
step :step_two
|
99
|
-
end
|
100
|
-
|
101
|
-
def step_one(**)
|
102
|
-
ctx[:step_one] = 'Success'
|
103
|
-
end
|
104
|
-
|
105
|
-
def pass_one(**)
|
106
|
-
ctx[:pass_one] = 'Success'
|
107
|
-
end
|
108
|
-
|
109
|
-
def step_two(**)
|
110
|
-
ctx[:step_two] = 'Success'
|
111
|
-
end
|
112
|
-
|
113
|
-
def some_condition?(condition_param:, **)
|
114
|
-
condition_param
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
condition_positive = SomeActionIfCondition.call(condition_param: true)
|
119
|
-
condition_negative = SomeActionIfCondition.call(condition_param: false)
|
120
|
-
|
121
|
-
condition_positive # =>
|
122
|
-
# Result: success
|
123
|
-
|
124
|
-
# Railway Flow:
|
125
|
-
# step_one -> pass_one -> step_two
|
126
|
-
|
127
|
-
# Context:
|
128
|
-
# {:condition_param=>true, :step_one=>"Success", :pass_one=>"Success", :step_two=>"Success"}
|
129
|
-
|
130
|
-
# Errors:
|
131
|
-
# {}
|
132
|
-
|
133
|
-
|
134
|
-
condition_negative # =>
|
135
|
-
# Result: success
|
136
|
-
|
137
|
-
# Railway Flow:
|
138
|
-
# step_one -> step_two
|
139
|
-
|
140
|
-
# Context:
|
141
|
-
# {:condition_param=>false, :step_one=>"Success", :step_two=>"Success"}
|
142
|
-
|
143
|
-
# Errors:
|
144
|
-
# {}
|
145
|
-
```
|
146
|
-
|
147
|
-
```mermaid
|
148
|
-
flowchart LR
|
149
|
-
1(start)-->2(step_one);
|
150
|
-
2(step_one)-->|condition positive|3(pass_one);
|
151
|
-
3(pass_one)-->|success track|4(step_two);
|
152
|
-
2(step_one)-->|condition negative|4(step_two);
|
153
|
-
4(step_two)-->|success track|5(finish_success);
|
154
|
-
```
|
155
|
-
</p>
|
156
|
-
</details>
|
157
|
-
|
158
|
-
***
|
159
|
-
|
160
|
-
### unless: condition method name
|
161
|
-
Can be used in case if for some reason step shouldn't be executed
|
162
|
-
|
163
|
-
<details><summary><b>EXAMPLE (CLICK ME)</b></summary>
|
164
|
-
<p>
|
165
|
-
|
166
|
-
```ruby
|
167
|
-
require 'decouplio'
|
168
|
-
|
169
|
-
class SomeActionUnlessCondition < Decouplio::Action
|
170
|
-
logic do
|
171
|
-
step :step_one
|
172
|
-
pass :pass_one, unless: :some_condition?
|
173
|
-
step :step_two
|
174
|
-
end
|
175
|
-
|
176
|
-
def step_one(**)
|
177
|
-
ctx[:step_one] = 'Success'
|
178
|
-
end
|
179
|
-
|
180
|
-
def pass_one(**)
|
181
|
-
ctx[:pass_one] = 'Success'
|
182
|
-
end
|
183
|
-
|
184
|
-
def step_two(**)
|
185
|
-
ctx[:step_two] = 'Success'
|
186
|
-
end
|
187
|
-
|
188
|
-
def some_condition?(condition_param:, **)
|
189
|
-
condition_param
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
condition_positive = SomeActionUnlessCondition.call(condition_param: false)
|
194
|
-
condition_negative = SomeActionUnlessCondition.call(condition_param: true)
|
195
|
-
|
196
|
-
condition_positive # =>
|
197
|
-
# Result: success
|
198
|
-
|
199
|
-
# Railway Flow:
|
200
|
-
# step_one -> pass_one -> step_two
|
201
|
-
|
202
|
-
# Context:
|
203
|
-
# {:condition_param=>false, :step_one=>"Success", :pass_one=>"Success", :step_two=>"Success"}
|
204
|
-
|
205
|
-
# Errors:
|
206
|
-
# {}
|
207
|
-
|
208
|
-
condition_negative # =>
|
209
|
-
# Result: success
|
210
|
-
|
211
|
-
# Railway Flow:
|
212
|
-
# step_one -> step_two
|
213
|
-
|
214
|
-
# Context:
|
215
|
-
# {:condition_param=>true, :step_one=>"Success", :step_two=>"Success"}
|
216
|
-
|
217
|
-
# Errors:
|
218
|
-
# {}
|
219
|
-
```
|
220
|
-
|
221
|
-
```mermaid
|
222
|
-
flowchart LR
|
223
|
-
1(start)-->2(step_one);
|
224
|
-
2(step_one)-->|condition positive|3(pass_one);
|
225
|
-
3(pass_one)-->|success track|4(step_two);
|
226
|
-
2(step_one)-->|condition negative|4(step_two);
|
227
|
-
4(step_two)-->|success track|5(finish_success);
|
228
|
-
```
|
229
|
-
</p>
|
230
|
-
</details>
|
231
|
-
|
232
|
-
***
|
233
|
-
|
234
|
-
### finish_him: true
|
235
|
-
|
236
|
-
Can be used in case if for some reason step shouldn't be executed
|
237
|
-
|
238
|
-
<details><summary><b>EXAMPLE (CLICK ME)</b></summary>
|
239
|
-
<p>
|
240
|
-
|
241
|
-
```ruby
|
242
|
-
require 'decouplio'
|
243
|
-
|
244
|
-
class SomeActionFinishHim < Decouplio::Action
|
245
|
-
logic do
|
246
|
-
step :step_one, on_success: :step_two, on_failure: :pass_one
|
247
|
-
pass :pass_one, finish_him: true
|
248
|
-
step :step_two
|
249
|
-
step :step_three
|
250
|
-
end
|
251
|
-
|
252
|
-
def step_one(param_for_step:, **)
|
253
|
-
ctx[:step_one] = param_for_step
|
254
|
-
end
|
255
|
-
|
256
|
-
def pass_one(**)
|
257
|
-
ctx[:pass_one] = 'Success'
|
258
|
-
end
|
259
|
-
|
260
|
-
def step_two(**)
|
261
|
-
ctx[:step_two] = 'Success'
|
262
|
-
end
|
263
|
-
|
264
|
-
def step_three(**)
|
265
|
-
ctx[:step_three] = 'Success'
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
success_track = SomeActionFinishHim.call(param_for_step: true)
|
270
|
-
failure_track = SomeActionFinishHim.call(param_for_step: false)
|
271
|
-
|
272
|
-
success_track # =>
|
273
|
-
# Result: success
|
274
|
-
|
275
|
-
# Railway Flow:
|
276
|
-
# step_one -> step_two -> step_three
|
277
|
-
|
278
|
-
# Context:
|
279
|
-
# {:param_for_step=>true, :step_one=>true, :step_two=>"Success", :step_three=>"Success"}
|
280
|
-
|
281
|
-
# Errors:
|
282
|
-
# {}
|
283
|
-
|
284
|
-
failure_track # =>
|
285
|
-
# Result: success
|
286
|
-
|
287
|
-
# Railway Flow:
|
288
|
-
# step_one -> pass_one
|
289
|
-
|
290
|
-
# Context:
|
291
|
-
# {:param_for_step=>false, :step_one=>false, :pass_one=>"Success"}
|
292
|
-
|
293
|
-
# Errors:
|
294
|
-
# {}
|
295
|
-
```
|
296
|
-
|
297
|
-
```mermaid
|
298
|
-
flowchart LR
|
299
|
-
1(start)-->2(step_one);
|
300
|
-
2(step_one)-->|success track|3(step_two);
|
301
|
-
3(step_two)-->|success track|4(step_three);
|
302
|
-
2(step_one)-->|failure track|5(pass_one);
|
303
|
-
4(step_three)-->|success track|6(finish success);
|
304
|
-
5(pass_one)-->|success track|6(finish success);
|
305
|
-
```
|
306
|
-
</p>
|
307
|
-
</details>
|
308
|
-
|
309
|
-
***
|
data/docs/pass.rb
DELETED
@@ -1,213 +0,0 @@
|
|
1
|
-
require_relative '../lib/decouplio'
|
2
|
-
|
3
|
-
# Behavior
|
4
|
-
class SomeAction < Decouplio::Action
|
5
|
-
logic do
|
6
|
-
pass :pass_one
|
7
|
-
step :step_two
|
8
|
-
fail :fail_one
|
9
|
-
end
|
10
|
-
|
11
|
-
def pass_one(param_for_pass:, **)
|
12
|
-
ctx[:pass_one] = param_for_pass
|
13
|
-
end
|
14
|
-
|
15
|
-
def step_two(**)
|
16
|
-
ctx[:step_two] = 'Success'
|
17
|
-
end
|
18
|
-
|
19
|
-
def fail_one(**)
|
20
|
-
ctx[:fail_one] = 'Failure'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
pass_success = SomeAction.call(param_for_pass: true)
|
25
|
-
pass_failure = SomeAction.call(param_for_pass: false)
|
26
|
-
|
27
|
-
puts pass_success # =>
|
28
|
-
# Result: success
|
29
|
-
|
30
|
-
# Railway Flow:
|
31
|
-
# pass_one -> step_two
|
32
|
-
|
33
|
-
# Context:
|
34
|
-
# {:param_for_pass=>true, :pass_one=>true, :step_two=>"Success"}
|
35
|
-
|
36
|
-
# Errors:
|
37
|
-
# {}
|
38
|
-
|
39
|
-
puts pass_failure # =>
|
40
|
-
# Result: success
|
41
|
-
|
42
|
-
# Railway Flow:
|
43
|
-
# pass_one -> step_two
|
44
|
-
|
45
|
-
# Context:
|
46
|
-
# {:param_for_pass=>false, :pass_one=>false, :step_two=>"Success"}
|
47
|
-
|
48
|
-
# Errors:
|
49
|
-
# {}
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
# if: condition method name
|
54
|
-
class SomeActionIfCondition < Decouplio::Action
|
55
|
-
logic do
|
56
|
-
step :step_one
|
57
|
-
pass :pass_one, if: :some_condition?
|
58
|
-
step :step_two
|
59
|
-
end
|
60
|
-
|
61
|
-
def step_one(**)
|
62
|
-
ctx[:step_one] = 'Success'
|
63
|
-
end
|
64
|
-
|
65
|
-
def pass_one(**)
|
66
|
-
ctx[:pass_one] = 'Success'
|
67
|
-
end
|
68
|
-
|
69
|
-
def step_two(**)
|
70
|
-
ctx[:step_two] = 'Success'
|
71
|
-
end
|
72
|
-
|
73
|
-
def some_condition?(condition_param:, **)
|
74
|
-
condition_param
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
condition_positive = SomeActionIfCondition.call(condition_param: true)
|
79
|
-
condition_negative = SomeActionIfCondition.call(condition_param: false)
|
80
|
-
|
81
|
-
puts condition_positive # =>
|
82
|
-
# Result: success
|
83
|
-
|
84
|
-
# Railway Flow:
|
85
|
-
# step_one -> pass_one -> step_two
|
86
|
-
|
87
|
-
# Context:
|
88
|
-
# {:condition_param=>true, :step_one=>"Success", :pass_one=>"Success", :step_two=>"Success"}
|
89
|
-
|
90
|
-
# Errors:
|
91
|
-
# {}
|
92
|
-
|
93
|
-
|
94
|
-
puts condition_negative # =>
|
95
|
-
# Result: success
|
96
|
-
|
97
|
-
# Railway Flow:
|
98
|
-
# step_one -> step_two
|
99
|
-
|
100
|
-
# Context:
|
101
|
-
# {:condition_param=>false, :step_one=>"Success", :step_two=>"Success"}
|
102
|
-
|
103
|
-
# Errors:
|
104
|
-
# {}
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
# unless: condition method name
|
109
|
-
class SomeActionUnlessCondition < Decouplio::Action
|
110
|
-
logic do
|
111
|
-
step :step_one
|
112
|
-
pass :pass_one, unless: :some_condition?
|
113
|
-
step :step_two
|
114
|
-
end
|
115
|
-
|
116
|
-
def step_one(**)
|
117
|
-
ctx[:step_one] = 'Success'
|
118
|
-
end
|
119
|
-
|
120
|
-
def pass_one(**)
|
121
|
-
ctx[:pass_one] = 'Success'
|
122
|
-
end
|
123
|
-
|
124
|
-
def step_two(**)
|
125
|
-
ctx[:step_two] = 'Success'
|
126
|
-
end
|
127
|
-
|
128
|
-
def some_condition?(condition_param:, **)
|
129
|
-
condition_param
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
condition_positive = SomeActionUnlessCondition.call(condition_param: false)
|
134
|
-
condition_negative = SomeActionUnlessCondition.call(condition_param: true)
|
135
|
-
|
136
|
-
puts condition_positive # =>
|
137
|
-
# Result: success
|
138
|
-
|
139
|
-
# Railway Flow:
|
140
|
-
# step_one -> pass_one -> step_two
|
141
|
-
|
142
|
-
# Context:
|
143
|
-
# {:condition_param=>false, :step_one=>"Success", :pass_one=>"Success", :step_two=>"Success"}
|
144
|
-
|
145
|
-
# Errors:
|
146
|
-
# {}
|
147
|
-
|
148
|
-
puts condition_negative # =>
|
149
|
-
# Result: success
|
150
|
-
|
151
|
-
# Railway Flow:
|
152
|
-
# step_one -> step_two
|
153
|
-
|
154
|
-
# Context:
|
155
|
-
# {:condition_param=>true, :step_one=>"Success", :step_two=>"Success"}
|
156
|
-
|
157
|
-
# Errors:
|
158
|
-
# {}
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
# finish_him: true
|
163
|
-
class SomeActionFinishHim < Decouplio::Action
|
164
|
-
logic do
|
165
|
-
step :step_one, on_success: :step_two, on_failure: :pass_one
|
166
|
-
pass :pass_one, finish_him: true
|
167
|
-
step :step_two
|
168
|
-
step :step_three
|
169
|
-
end
|
170
|
-
|
171
|
-
def step_one(param_for_step:, **)
|
172
|
-
ctx[:step_one] = param_for_step
|
173
|
-
end
|
174
|
-
|
175
|
-
def pass_one(**)
|
176
|
-
ctx[:pass_one] = 'Success'
|
177
|
-
end
|
178
|
-
|
179
|
-
def step_two(**)
|
180
|
-
ctx[:step_two] = 'Success'
|
181
|
-
end
|
182
|
-
|
183
|
-
def step_three(**)
|
184
|
-
ctx[:step_three] = 'Success'
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
success_track = SomeActionFinishHim.call(param_for_step: true)
|
189
|
-
failure_track = SomeActionFinishHim.call(param_for_step: false)
|
190
|
-
|
191
|
-
puts success_track # =>
|
192
|
-
# Result: success
|
193
|
-
|
194
|
-
# Railway Flow:
|
195
|
-
# step_one -> step_two -> step_three
|
196
|
-
|
197
|
-
# Context:
|
198
|
-
# {:param_for_step=>true, :step_one=>true, :step_two=>"Success", :step_three=>"Success"}
|
199
|
-
|
200
|
-
# Errors:
|
201
|
-
# {}
|
202
|
-
|
203
|
-
puts failure_track # =>
|
204
|
-
# Result: success
|
205
|
-
|
206
|
-
# Railway Flow:
|
207
|
-
# step_one -> pass_one
|
208
|
-
|
209
|
-
# Context:
|
210
|
-
# {:param_for_step=>false, :step_one=>false, :pass_one=>"Success"}
|
211
|
-
|
212
|
-
# Errors:
|
213
|
-
# {}
|
data/docs/quick_start.md
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
## Quick start
|
2
|
-
|
3
|
-
### Installation
|
4
|
-
|
5
|
-
Regular installation
|
6
|
-
```
|
7
|
-
gem install decouplio
|
8
|
-
```
|
9
|
-
|
10
|
-
Gemfile
|
11
|
-
```ruby
|
12
|
-
gem 'decouplio'
|
13
|
-
```
|
14
|
-
|
15
|
-
### Usage
|
16
|
-
|
17
|
-
All you need to do is to create new class and inherit it from `Decouplio::Action`, define your action logic and implement methods.
|
18
|
-
|
19
|
-
```ruby
|
20
|
-
require 'decouplio'
|
21
|
-
|
22
|
-
class ProcessNumber < Decouplio::Action
|
23
|
-
logic do
|
24
|
-
step :multiply
|
25
|
-
step :divide
|
26
|
-
end
|
27
|
-
|
28
|
-
def multiply(number:, multiplier:, **)
|
29
|
-
ctx[:result] = number * multiplier
|
30
|
-
end
|
31
|
-
|
32
|
-
def divide(result:, divider:, **)
|
33
|
-
ctx[:result] = result / divider
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
action = ProcessNumber.call(number: 5, multiplier: 4, divider: 10) # =>
|
38
|
-
# Result: success
|
39
|
-
|
40
|
-
# Railway Flow:
|
41
|
-
# multiply -> divide
|
42
|
-
|
43
|
-
# Context:
|
44
|
-
# {:number=>5, :multiplier=>4, :divider=>10, :result=>2}
|
45
|
-
|
46
|
-
# Errors:
|
47
|
-
# {}
|
48
|
-
|
49
|
-
action[:number] # => 5
|
50
|
-
action[:multiplier] # => 4
|
51
|
-
action[:divider] # => 10
|
52
|
-
action[:result] # => 2
|
53
|
-
|
54
|
-
action.success? # => true
|
55
|
-
action.failure? # => false
|
56
|
-
|
57
|
-
action.railway_flow # => [:multiply, :divide]
|
58
|
-
```
|
59
|
-
Learn more about all features:
|
60
|
-
- [Logic block](https://github.com/differencialx/decouplio/blob/master/docs/logic_block.md)
|
61
|
-
- [Context](https://github.com/differencialx/decouplio/blob/master/docs/context.md)
|
62
|
-
- [Step](https://github.com/differencialx/decouplio/blob/master/docs/step.md)
|
63
|
-
- [Fail](https://github.com/differencialx/decouplio/blob/master/docs/fail.md)
|
64
|
-
- [Pass](https://github.com/differencialx/decouplio/blob/master/docs/pass.md)
|
65
|
-
- [Octo](https://github.com/differencialx/decouplio/blob/master/docs/octo.md)
|
66
|
-
- [Wrap](https://github.com/differencialx/decouplio/blob/master/docs/wrap.md)
|
67
|
-
- [Resq](https://github.com/differencialx/decouplio/blob/master/docs/resq.md)
|
68
|
-
- [Inner action](https://github.com/differencialx/decouplio/blob/master/docs/inner_action.md)
|
69
|
-
- [Doby/Aide](https://github.com/differencialx/decouplio/blob/master/docs/doby_aide.md)
|
70
|
-
- [Step as a service](https://github.com/differencialx/decouplio/blob/master/docs/step_as_a_service.md)
|
71
|
-
- [Error store](https://github.com/differencialx/decouplio/blob/master/docs/error_store.md)
|
data/docs/quick_start.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require_relative '../lib/decouplio'
|
2
|
-
|
3
|
-
class ProcessNumber < Decouplio::Action
|
4
|
-
logic do
|
5
|
-
step :multiply
|
6
|
-
step :divide
|
7
|
-
end
|
8
|
-
|
9
|
-
def multiply(number:, multiplier:, **)
|
10
|
-
ctx[:result] = number * multiplier
|
11
|
-
end
|
12
|
-
|
13
|
-
def divide(result:, divider:, **)
|
14
|
-
ctx[:result] = result / divider
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
action = ProcessNumber.call(number: 5, multiplier: 4, divider: 10) # =>
|
19
|
-
# Result: success
|
20
|
-
|
21
|
-
# Railway Flow:
|
22
|
-
# multiply -> divide
|
23
|
-
|
24
|
-
# Context:
|
25
|
-
# {:number=>5, :multiplier=>4, :divider=>10, :result=>2}
|
26
|
-
|
27
|
-
# Errors:
|
28
|
-
# {}
|
29
|
-
puts action
|
30
|
-
puts action[:number]# => 5
|
31
|
-
puts action[:multiplier]# => 4
|
32
|
-
puts action[:divider]# => 10
|
33
|
-
puts action[:result]# => 2
|
34
|
-
|
35
|
-
puts action.success? # => true
|
36
|
-
puts action.failure? # => false
|
37
|
-
|
38
|
-
puts action.railway_flow.to_s # => [:multiply, :divide]
|