trailblazer-operation 0.2.2 → 0.2.3
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/Gemfile +1 -1
- data/lib/trailblazer/operation.rb +3 -2
- data/lib/trailblazer/operation/callable.rb +42 -0
- data/lib/trailblazer/operation/version.rb +1 -1
- data/test/callable_test.rb +147 -0
- data/test/docs/operation_test.rb +23 -0
- data/test/docs/wiring_test.rb +8 -8
- data/test/fast_track_test.rb +7 -7
- data/test/inspect_test.rb +2 -2
- data/test/macro_test.rb +4 -5
- data/test/test_helper.rb +1 -1
- data/test/trace_test.rb +1 -1
- data/test/wiring/defaults_test.rb +3 -3
- data/trailblazer-operation.gemspec +1 -1
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9087723ae9650669c304ea1451156be3a8b1d42cb04a46bd228ab7060b8b321c
|
4
|
+
data.tar.gz: 193d554218c156f0817692a6841ea55ddf5b87b537bc52957b586de5a6487826
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c60ef931a4c9f45be7285700d29e8ac5f5d912634df7fdbae07014283d1c60731469eececbe2aeecfa1bb8c3531ed9703b00d21e99be1d5f4c705624a1ff7821
|
7
|
+
data.tar.gz: d3684f685583bc322efd275fc8b14653cc408c4d56c18ab099753480166b0ad6882ad4cf9fa103bb781ca8d73b4f164f331abd7bc8396c7085bf748e828c3be3
|
data/Gemfile
CHANGED
@@ -6,10 +6,11 @@ require "trailblazer/context"
|
|
6
6
|
require "trailblazer/container_chain"
|
7
7
|
|
8
8
|
require "trailblazer/activity"
|
9
|
-
require "trailblazer/activity/magnetic"
|
9
|
+
require "trailblazer/activity/dsl/magnetic"
|
10
10
|
|
11
11
|
|
12
12
|
require "trailblazer/operation/variable_mapping"
|
13
|
+
require "trailblazer/operation/callable"
|
13
14
|
|
14
15
|
require "trailblazer/operation/heritage"
|
15
16
|
require "trailblazer/operation/public_call" # TODO: Remove in 3.0.
|
@@ -78,7 +79,7 @@ module Trailblazer
|
|
78
79
|
|
79
80
|
class << self
|
80
81
|
extend Forwardable # TODO: test those helpers
|
81
|
-
def_delegators :@activity, :Path, :Output, :End
|
82
|
+
def_delegators :@activity, :Path, :Output, :End, :Track
|
82
83
|
def_delegators :@activity, :outputs, :debug
|
83
84
|
|
84
85
|
def step(task, options={}, &block); add_task!(:step, task, options, &block) end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Trailblazer
|
2
|
+
class Operation
|
3
|
+
# Use {Callable} if you have an operation or any other callable object that does
|
4
|
+
# _not_ expose an {Activity interface}. For example, {Operation.call} isn't compatible
|
5
|
+
# with activities, hence you need to decorate it using {Callable}. The returned object
|
6
|
+
# exposes an {Activity interface}.
|
7
|
+
#
|
8
|
+
# @param :call [Symbol] Method name to call
|
9
|
+
# @param options [Hash] Hash to merge into {circuit_options}, e.g. {:start_task}.
|
10
|
+
#
|
11
|
+
# @example Create and use a Callable instance.
|
12
|
+
# callable = Trailblazer::Operation::Callable( Memo::Create, call: :__call__ )
|
13
|
+
# callable.( [ctx, {}] ) #=> Activity interface, ::call will invoke Memo::Create.__call__.
|
14
|
+
def self.Callable(*args)
|
15
|
+
Callable.new(*args)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Subprocess allows to have tasks with a different call interface and start event.
|
19
|
+
# @param activity any object with an {Activity interface}
|
20
|
+
class Callable
|
21
|
+
include Activity::Interface
|
22
|
+
|
23
|
+
def initialize(activity, call: :call, **options)
|
24
|
+
@activity = activity
|
25
|
+
@options = options
|
26
|
+
@call = call
|
27
|
+
end
|
28
|
+
|
29
|
+
def call(args, **circuit_options)
|
30
|
+
@activity.public_send(@call, args, circuit_options.merge(@options))
|
31
|
+
end
|
32
|
+
|
33
|
+
extend Forwardable
|
34
|
+
# @private
|
35
|
+
def_delegators :@activity, :to_h, :debug
|
36
|
+
|
37
|
+
def to_s
|
38
|
+
%{#<Trailblazer::Activity::Callable activity=#{@activity}>}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class CallableHelper < Minitest::Spec
|
4
|
+
Operation = Trailblazer::Operation
|
5
|
+
Activity = Trailblazer::Activity
|
6
|
+
|
7
|
+
module Blog
|
8
|
+
Read = ->((options, *args), *) { options["Read"] = 1; [ Activity::Right, [options, *args] ] }
|
9
|
+
Next = ->((options, *args), *) { options["NextPage"] = []; [ options["return"], [options, *args] ] }
|
10
|
+
Comment = ->((options, *args), *) { options["Comment"] = 2; [ Activity::Right, [options, *args] ] }
|
11
|
+
end
|
12
|
+
|
13
|
+
module User
|
14
|
+
Relax = ->((options, *args), *) { options["Relax"]=true; [ Activity::Right, [options, *args] ] }
|
15
|
+
end
|
16
|
+
|
17
|
+
### Callable( )
|
18
|
+
###
|
19
|
+
describe "circuit with 1 level of nesting" do # TODO: test this kind of configuration in dsl_tests somewhere.
|
20
|
+
let(:blog) do
|
21
|
+
Module.new do
|
22
|
+
extend Activity::Path()
|
23
|
+
|
24
|
+
task task: Blog::Read
|
25
|
+
task task: Blog::Next, Output(Activity::Right, :done) => "End.success", Output(Activity::Left, :success) => Track(:success)
|
26
|
+
task task: Blog::Comment
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:user) do
|
31
|
+
_blog = blog
|
32
|
+
|
33
|
+
Module.new do
|
34
|
+
extend Activity::Path()
|
35
|
+
|
36
|
+
task task: _blog, _blog.outputs[:success] => Track(:success)
|
37
|
+
task task: User::Relax
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it "ends before comment, on next_page" do
|
42
|
+
user.( [options = { "return" => Activity::Right }] ).must_equal(
|
43
|
+
[user.outputs[:success].signal, [{"return"=>Trailblazer::Activity::Right, "Read"=>1, "NextPage"=>[], "Relax"=>true}]]
|
44
|
+
)
|
45
|
+
|
46
|
+
options.must_equal({"return"=>Trailblazer::Activity::Right, "Read"=>1, "NextPage"=>[], "Relax"=>true})
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
### Callable( End1, End2 )
|
51
|
+
###
|
52
|
+
describe "circuit with 2 end events in the nested process" do
|
53
|
+
let(:blog) do
|
54
|
+
Module.new do
|
55
|
+
extend Activity::Path()
|
56
|
+
|
57
|
+
task task: Blog::Read
|
58
|
+
task task: Blog::Next, Output(Activity::Right, :success___) => :__success, Output(Activity::Left, :retry___) => _retry=End(:retry)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
let(:user) do
|
63
|
+
_blog = blog
|
64
|
+
|
65
|
+
Module.new do
|
66
|
+
extend Activity::Path()
|
67
|
+
|
68
|
+
task task: _blog, _blog.outputs[:success] => Track(:success), _blog.outputs[:retry] => "End.success"
|
69
|
+
task task: User::Relax
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it "runs from Callable->default to Relax" do
|
74
|
+
user.( [ options = { "return" => Activity::Right } ] ).must_equal [
|
75
|
+
user.outputs[:success].signal,
|
76
|
+
[ {"return"=>Activity::Right, "Read"=>1, "NextPage"=>[], "Relax"=>true} ]
|
77
|
+
]
|
78
|
+
|
79
|
+
options.must_equal({"return"=>Activity::Right, "Read"=>1, "NextPage"=>[], "Relax"=>true})
|
80
|
+
end
|
81
|
+
|
82
|
+
it "runs from other Callable end" do
|
83
|
+
user.( [ options = { "return" => Activity::Left } ] ).must_equal [
|
84
|
+
user.outputs[:success].signal,
|
85
|
+
[ {"return"=>Activity::Left, "Read"=>1, "NextPage"=>[]} ]
|
86
|
+
]
|
87
|
+
|
88
|
+
options.must_equal({"return"=>Activity::Left, "Read"=>1, "NextPage"=>[]})
|
89
|
+
end
|
90
|
+
|
91
|
+
#---
|
92
|
+
#- Callable( activity, start_at )
|
93
|
+
let(:with_nested_and_start_at) do
|
94
|
+
_blog = blog
|
95
|
+
|
96
|
+
Module.new do
|
97
|
+
extend Activity::Path()
|
98
|
+
|
99
|
+
task task: Operation::Callable( _blog, task: Blog::Next ), _blog.outputs[:success] => Track(:success)
|
100
|
+
task task: User::Relax
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
it "runs Callable from alternative start" do
|
105
|
+
with_nested_and_start_at.( [options = { "return" => Activity::Right }] ).
|
106
|
+
must_equal [
|
107
|
+
with_nested_and_start_at.outputs[:success].signal,
|
108
|
+
[ {"return"=>Activity::Right, "NextPage"=>[], "Relax"=>true} ]
|
109
|
+
]
|
110
|
+
|
111
|
+
options.must_equal({"return"=>Activity::Right, "NextPage"=>[], "Relax"=>true})
|
112
|
+
end
|
113
|
+
|
114
|
+
#---
|
115
|
+
#- Callable( activity, call: :__call__ ) { ... }
|
116
|
+
describe "Callable with :call option" do
|
117
|
+
let(:process) do
|
118
|
+
class Workout
|
119
|
+
def self.__call__((options, *args), *)
|
120
|
+
options[:workout] = 9
|
121
|
+
|
122
|
+
return Activity::Right, [options, *args]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
subprocess = Operation::Callable( Workout, call: :__call__ )
|
127
|
+
|
128
|
+
Module.new do
|
129
|
+
extend Activity::Path()
|
130
|
+
|
131
|
+
task task: subprocess
|
132
|
+
task task: User::Relax
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
it "runs Callable process with __call__" do
|
137
|
+
process.( [options = { "return" => Activity::Right }] ).
|
138
|
+
must_equal [
|
139
|
+
process.outputs[:success].signal,
|
140
|
+
[{"return"=>Activity::Right, :workout=>9, "Relax"=>true}]
|
141
|
+
]
|
142
|
+
|
143
|
+
options.must_equal({"return"=>Activity::Right, :workout=>9, "Relax"=>true})
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class DocsActivityTest < Minitest::Spec
|
4
|
+
Memo = Struct.new(:body)
|
5
|
+
|
6
|
+
class Memo::Create < Trailblazer::Operation
|
7
|
+
step :create_model
|
8
|
+
def create_model(ctx, params:, **)
|
9
|
+
ctx[:model] = Memo.new(params[:body])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
#:describe
|
14
|
+
describe Memo::Create do
|
15
|
+
it "creates a sane Memo instance" do
|
16
|
+
result = Memo::Create.( params: { body: "Enjoy an IPA" } )
|
17
|
+
|
18
|
+
result.success?.must_equal true
|
19
|
+
result[:model].body.must_equal "Enjoy an IPA"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
#:describe end
|
23
|
+
end
|
data/test/docs/wiring_test.rb
CHANGED
@@ -314,7 +314,7 @@ class WiringsDocSeqOptionsTest < Minitest::Spec
|
|
314
314
|
Memo = Id::Memo
|
315
315
|
#:id-inspect
|
316
316
|
Trailblazer::Operation.introspect( Memo::Create )
|
317
|
-
#=> [>
|
317
|
+
#=> [>create_memo,>validate_params,>save]
|
318
318
|
#:id-inspect end
|
319
319
|
|
320
320
|
Trailblazer::Operation.introspect( Memo::Create ).must_equal %{[>create_memo,>validate_params,>save]}
|
@@ -368,10 +368,10 @@ class WiringsDocRecoverTest < Minitest::Spec
|
|
368
368
|
#:fail-success
|
369
369
|
class Memo::Upload < Trailblazer::Operation
|
370
370
|
step :upload_to_s3
|
371
|
-
fail :upload_to_azure, Output(:success) => :success
|
372
|
-
fail :upload_to_b2, Output(:success) => :success
|
371
|
+
fail :upload_to_azure, Output(:success) => Track(:success)
|
372
|
+
fail :upload_to_b2, Output(:success) => Track(:success)
|
373
373
|
fail :log_problem
|
374
|
-
#~
|
374
|
+
#~methods
|
375
375
|
#:fail-success-s3
|
376
376
|
def upload_to_s3(options, s3:, **)
|
377
377
|
options[:s3] = s3 # the actual upload is dispatched here and result collected.
|
@@ -389,7 +389,7 @@ class WiringsDocRecoverTest < Minitest::Spec
|
|
389
389
|
def log_problem(options, **)
|
390
390
|
options[:problem] = "All uploads failed."
|
391
391
|
end
|
392
|
-
#~
|
392
|
+
#~methods end
|
393
393
|
end
|
394
394
|
#:fail-success end
|
395
395
|
|
@@ -477,11 +477,11 @@ class WiringsDocDeciderTest < Minitest::Spec
|
|
477
477
|
|
478
478
|
#:decider
|
479
479
|
class Memo::Upsert < Trailblazer::Operation
|
480
|
-
step :find_model, Output(:failure) => :create_route
|
480
|
+
step :find_model, Output(:failure) => Track(:create_route)
|
481
481
|
step :update
|
482
482
|
step :create, magnetic_to: [:create_route]
|
483
483
|
step :save
|
484
|
-
#~
|
484
|
+
#~methods
|
485
485
|
def find_model(options, id:nil, **)
|
486
486
|
options[:model] = Memo.find(id)
|
487
487
|
end
|
@@ -498,7 +498,7 @@ class WiringsDocDeciderTest < Minitest::Spec
|
|
498
498
|
def save(options, **)
|
499
499
|
options[:save] = true
|
500
500
|
end
|
501
|
-
#~
|
501
|
+
#~methods end
|
502
502
|
end
|
503
503
|
#:decider end
|
504
504
|
|
data/test/fast_track_test.rb
CHANGED
@@ -126,8 +126,8 @@ class NestedFastTrackTest < Minitest::Spec
|
|
126
126
|
describe "Nested, fast_track: true and all its outputs given" do
|
127
127
|
let(:update) do
|
128
128
|
Class.new(Trailblazer::Operation) do
|
129
|
-
step task: Trailblazer::
|
130
|
-
|
129
|
+
step task: Trailblazer::Operation::Callable( Edit, call: :__call__ ), id: "Callable/",
|
130
|
+
outputs: Edit.outputs ,
|
131
131
|
fast_track: true
|
132
132
|
step :b
|
133
133
|
fail :f
|
@@ -151,8 +151,8 @@ class NestedFastTrackTest < Minitest::Spec
|
|
151
151
|
Class.new(Trailblazer::Operation) do
|
152
152
|
include Steps
|
153
153
|
|
154
|
-
step task: Trailblazer::
|
155
|
-
|
154
|
+
step task: Trailblazer::Operation::Callable( Edit, call: :__call__ ), id: "Callable/",
|
155
|
+
outputs: Edit.outputs # all outputs given means it "works"
|
156
156
|
step :b
|
157
157
|
fail :f
|
158
158
|
end
|
@@ -173,9 +173,9 @@ class NestedFastTrackTest < Minitest::Spec
|
|
173
173
|
Class.new(Trailblazer::Operation) do
|
174
174
|
include Steps
|
175
175
|
|
176
|
-
step({task: Trailblazer::
|
177
|
-
|
178
|
-
{Output(:pass_fast) => :success, Output(:fail_fast) => :failure} )# manually rewire the fast-track outputs to "conventional" railway ends.
|
176
|
+
step({task: Trailblazer::Operation::Callable( Edit, call: :__call__ ), id: "Callable/",
|
177
|
+
outputs: Edit.outputs },
|
178
|
+
{Output(:pass_fast) => Track(:success), Output(:fail_fast) => Track(:failure)} )# manually rewire the fast-track outputs to "conventional" railway ends.
|
179
179
|
|
180
180
|
step :b
|
181
181
|
fail :f
|
data/test/inspect_test.rb
CHANGED
@@ -31,9 +31,9 @@ class InspectTest < Minitest::Spec
|
|
31
31
|
5 ============================>finalize!}
|
32
32
|
end
|
33
33
|
|
34
|
-
describe "step with only one
|
34
|
+
describe "step with only one output (happens with Nested)" do
|
35
35
|
class Present < Trailblazer::Operation
|
36
|
-
pass :ok!,
|
36
|
+
pass :ok!, outputs: {:success => Trailblazer::Activity::Output("signal", :success)}
|
37
37
|
end
|
38
38
|
|
39
39
|
it do
|
data/test/macro_test.rb
CHANGED
@@ -5,8 +5,6 @@ require "test_helper"
|
|
5
5
|
# macro [ task, {name}, { alteration: }, {task_outputs} ] # for eg. nested
|
6
6
|
|
7
7
|
class MacroTest < Minitest::Spec
|
8
|
-
PlusPoles = Trailblazer::Activity::Magnetic::DSL::PlusPoles
|
9
|
-
|
10
8
|
MacroB = ->(( options, *args ), **) do
|
11
9
|
options[:B] = true # we were here!
|
12
10
|
|
@@ -26,7 +24,7 @@ class MacroTest < Minitest::Spec
|
|
26
24
|
|
27
25
|
class Create < Trailblazer::Operation
|
28
26
|
step :a
|
29
|
-
step
|
27
|
+
step task: MacroB, id: :MacroB, outputs: { :success => Activity::Output("Allgood", :success), :failure => Activity::Output("Fail!", :failure), :pass_fast => Activity::Output("Winning", :pass_fast) }
|
30
28
|
step :c
|
31
29
|
|
32
30
|
def a(options, **); options[:a] = true end
|
@@ -42,10 +40,11 @@ class MacroTest < Minitest::Spec
|
|
42
40
|
|
43
41
|
#- user overrides :plus_poles
|
44
42
|
class Update < Trailblazer::Operation
|
45
|
-
macro = { task: MacroB, id: :MacroB,
|
43
|
+
macro = { task: MacroB, id: :MacroB, outputs: { :success => Activity::Output("Allgood", :success), :failure => Activity::Output("Fail!", :failure), :pass_fast => Activity::Output("Winning", :pass_fast) } }
|
46
44
|
|
47
45
|
step :a
|
48
|
-
step macro,
|
46
|
+
step macro, outputs: { :success => Activity::Output("Fail!", :success), :fail_fast => Activity::Output("Winning", :fail_fast), :failure => Activity::Output("Allgood", :failure) }
|
47
|
+
# plus_poles: Test.plus_poles_for("Allgood" => :failure, "Fail!" => :success, "Winning" => :fail_fast)
|
49
48
|
step :c
|
50
49
|
|
51
50
|
def a(options, **); options[:a] = true end
|
data/test/test_helper.rb
CHANGED
data/test/trace_test.rb
CHANGED
@@ -12,7 +12,7 @@ class TraceTest < Minitest::Spec
|
|
12
12
|
|
13
13
|
class Create < Trailblazer::Operation
|
14
14
|
step ->(options, a_return:, **) { options[:a] = a_return }, id: "Create.task.a"
|
15
|
-
step( {task: B, id: "MyNested"}, B.outputs[:success] => :success )
|
15
|
+
step( {task: B, id: "MyNested"}, B.outputs[:success] => Track(:success) )
|
16
16
|
step ->(options, **) { options[:c] = true }, id: "Create.task.c"
|
17
17
|
step ->(options, params:, **) { params.any? }, id: "Create.task.params"
|
18
18
|
|
@@ -79,8 +79,8 @@ require "test_helper"
|
|
79
79
|
class WireDefaultsEarlyExitSuccessTest < Minitest::Spec
|
80
80
|
class Create < Trailblazer::Operation
|
81
81
|
step :a
|
82
|
-
fail :b, Output(:success) => :success #{}"End.success"
|
83
|
-
fail :c, Output(:success) => :success
|
82
|
+
fail :b, Output(:success) => Track(:success) #{}"End.success"
|
83
|
+
fail :c, Output(:success) => Track(:success)
|
84
84
|
|
85
85
|
Test.step(self, :a, :b, :c)
|
86
86
|
end
|
@@ -99,7 +99,7 @@ class WireDefaultsEarlyExitSuccessTest < Minitest::Spec
|
|
99
99
|
|
100
100
|
|
101
101
|
# #---
|
102
|
-
# # with => :success, steps can still be added before End.success and they will be executed.
|
102
|
+
# # with => Track(:success), steps can still be added before End.success and they will be executed.
|
103
103
|
class Update < Create
|
104
104
|
pass :d
|
105
105
|
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_dependency "trailblazer-activity", ">= 0.
|
20
|
+
spec.add_dependency "trailblazer-activity", ">= 0.5.0", "< 0.7.0"
|
21
21
|
spec.add_dependency "trailblazer-context", ">= 0.1.1", "< 0.3.0"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trailblazer-operation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01
|
11
|
+
date: 2018-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trailblazer-activity
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.5.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.7.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.5.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.7.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: trailblazer-context
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- README.md
|
107
107
|
- Rakefile
|
108
108
|
- lib/trailblazer/operation.rb
|
109
|
+
- lib/trailblazer/operation/callable.rb
|
109
110
|
- lib/trailblazer/operation/deprecated_macro.rb
|
110
111
|
- lib/trailblazer/operation/heritage.rb
|
111
112
|
- lib/trailblazer/operation/inject.rb
|
@@ -123,9 +124,11 @@ files:
|
|
123
124
|
- lib/trailblazer/operation/version.rb
|
124
125
|
- test/benchmark/skill_resolver_benchmark.rb
|
125
126
|
- test/call_test.rb
|
127
|
+
- test/callable_test.rb
|
126
128
|
- test/class_dependencies_test.rb
|
127
129
|
- test/docs/doormat_test.rb
|
128
130
|
- test/docs/macaroni_test.rb
|
131
|
+
- test/docs/operation_test.rb
|
129
132
|
- test/docs/wiring_test.rb
|
130
133
|
- test/dry_container_test.rb
|
131
134
|
- test/fast_track_test.rb
|
@@ -178,9 +181,11 @@ summary: Trailblazer's operation object with railway flow and integrated error h
|
|
178
181
|
test_files:
|
179
182
|
- test/benchmark/skill_resolver_benchmark.rb
|
180
183
|
- test/call_test.rb
|
184
|
+
- test/callable_test.rb
|
181
185
|
- test/class_dependencies_test.rb
|
182
186
|
- test/docs/doormat_test.rb
|
183
187
|
- test/docs/macaroni_test.rb
|
188
|
+
- test/docs/operation_test.rb
|
184
189
|
- test/docs/wiring_test.rb
|
185
190
|
- test/dry_container_test.rb
|
186
191
|
- test/fast_track_test.rb
|