trailblazer-operation 0.5.2 → 0.6.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/.gitignore +1 -0
- data/CHANGES.md +20 -0
- data/Gemfile +3 -4
- data/README.md +1 -1
- data/lib/trailblazer/operation.rb +4 -2
- data/lib/trailblazer/operation/class_dependencies.rb +24 -15
- data/lib/trailblazer/operation/public_call.rb +12 -7
- data/lib/trailblazer/operation/trace.rb +9 -7
- data/lib/trailblazer/operation/version.rb +2 -4
- data/test/call_test.rb +1 -1
- data/test/class_dependencies_test.rb +25 -6
- data/test/docs/class_dependencies_test.rb +54 -0
- data/test/step_test.rb +3 -2
- data/test/test_helper.rb +3 -1
- data/test/trace_test.rb +24 -29
- data/trailblazer-operation.gemspec +5 -4
- metadata +37 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3e5248a8515b6f1255116f82ba2b0fc2836b373dcbe03d38fb5c0b93f94c82a
|
4
|
+
data.tar.gz: 185922dd1990ae902d2ed5fd4639c0d2788913d63036eb71542945b15eb1995c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4f01d8601c8e97e72f1cabb52adabd9371d416472fa1784573aa13cc1252108f2c5a6f12157e7e3379f21cfb7b7ebe2d5f1213813473a6796f05a6652b8cc55
|
7
|
+
data.tar.gz: ff7522a5ec8c73ad8ec76ef2e3f2019309fa2d9f708463c9e6b96a83cc07ac8cc6878714b4f730d4701848b69ceec11a999b65c5576514292f0da1b56c27b41a
|
data/.gitignore
CHANGED
data/CHANGES.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
## 0.6.3
|
2
|
+
|
3
|
+
* Require forwardable module from standard lib.
|
4
|
+
|
5
|
+
## 0.6.2
|
6
|
+
|
7
|
+
* Fix Trace so it works with Ruby <= 2.4
|
8
|
+
|
9
|
+
## 0.6.1
|
10
|
+
|
11
|
+
* Reintroduce `ClassDependencies` by leveraging `State.fields`.
|
12
|
+
|
13
|
+
## 0.6.0
|
14
|
+
|
15
|
+
* Require newest `activity` gem.
|
16
|
+
|
17
|
+
## 0.5.3
|
18
|
+
|
19
|
+
* New `context` API.
|
20
|
+
|
1
21
|
## 0.5.2
|
2
22
|
|
3
23
|
* Use `trailblazer-activity-dsl-linear-0.1.6.`
|
data/Gemfile
CHANGED
@@ -10,9 +10,8 @@ gem "dry-auto_inject"
|
|
10
10
|
gem "benchmark-ips"
|
11
11
|
gem "minitest-line"
|
12
12
|
|
13
|
-
gem "trailblazer-developer", path: "../
|
13
|
+
# gem "trailblazer-developer", path: "../developer"
|
14
14
|
# gem "trailblazer-developer", git: "https://github.com/trailblazer/trailblazer-developer"
|
15
|
-
gem "trailblazer-activity", path: "../trailblazer-activity"
|
16
|
-
gem "trailblazer-
|
17
|
-
gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
|
15
|
+
# gem "trailblazer-activity", path: "../trailblazer-activity"
|
16
|
+
# gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
|
18
17
|
# gem "trailblazer-activity", github: "trailblazer/trailblazer-activity"
|
data/README.md
CHANGED
@@ -15,6 +15,6 @@ An operation can be used exaclty like an activity, including nesting, tracing, e
|
|
15
15
|
|
16
16
|
## Copyright
|
17
17
|
|
18
|
-
Copyright (c) 2016 Nick Sutterer <apotonick@gmail.com>
|
18
|
+
Copyright (c) 2016-2020 Nick Sutterer <apotonick@gmail.com>
|
19
19
|
|
20
20
|
`trailblazer-operation` is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
@@ -1,11 +1,10 @@
|
|
1
|
+
require 'forwardable'
|
1
2
|
require "trailblazer/option"
|
2
3
|
require "trailblazer/context"
|
3
4
|
require "trailblazer/container_chain"
|
4
5
|
|
5
|
-
require "trailblazer/activity"
|
6
6
|
require "trailblazer/activity/dsl/linear"
|
7
7
|
|
8
|
-
|
9
8
|
module Trailblazer
|
10
9
|
# DISCUSS: I don't know where else to put this. It's not part of the {Activity} concept
|
11
10
|
class Activity
|
@@ -62,12 +61,15 @@ module Trailblazer
|
|
62
61
|
end
|
63
62
|
end
|
64
63
|
|
64
|
+
require 'trailblazer/operation/version'
|
65
|
+
|
65
66
|
require "trailblazer/operation/class_dependencies"
|
66
67
|
require "trailblazer/operation/deprecated_macro" # TODO: remove in 2.2.
|
67
68
|
|
68
69
|
require "trailblazer/operation/result"
|
69
70
|
require "trailblazer/operation/railway"
|
70
71
|
|
72
|
+
require "trailblazer/developer"
|
71
73
|
require "trailblazer/operation/trace"
|
72
74
|
|
73
75
|
require "trailblazer/operation/railway/macaroni"
|
@@ -1,25 +1,34 @@
|
|
1
1
|
# Dependencies can be defined on the operation. class level
|
2
2
|
class Trailblazer::Operation
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
3
|
+
# The use of this module is currently not encouraged and it is only here for backward-compatibility.
|
4
|
+
# Instead, please pass dependencies via containers, locals, or macros into the respective steps.
|
5
|
+
module ClassDependencies
|
6
|
+
def [](field)
|
7
|
+
@state.to_h[:fields][field]
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
def []=(field, value)
|
11
|
+
options = @state.to_h[:fields].merge(field => value)
|
12
|
+
@state.update_options(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def options_for_public_call(options, *)
|
16
|
+
ctx = super
|
17
|
+
context_for_fields(class_fields, ctx)
|
18
|
+
end
|
19
|
+
|
20
|
+
private def class_fields
|
21
|
+
@state.to_h[:fields]
|
22
|
+
end
|
23
|
+
|
24
|
+
private def context_for_fields(fields, ctx)
|
25
|
+
ctx_with_fields = Trailblazer::Context.implementation.build(fields, ctx, [ctx, {}], {}) # TODO: redundant to otions_for_public_call. how to inject aliasing etc?
|
13
26
|
end
|
14
|
-
end
|
15
27
|
|
16
|
-
# The use of this module is not encouraged and it is only here for backward-compatibility.
|
17
|
-
# Instead, please pass dependencies via containers, locals, or macros into the respective steps.
|
18
|
-
module ClassDependencies
|
19
28
|
def call_with_circuit_interface((ctx, flow_options), **circuit_options)
|
20
|
-
|
29
|
+
ctx_with_fields = context_for_fields(class_fields, ctx)
|
21
30
|
|
22
|
-
super
|
31
|
+
super([ctx_with_fields, flow_options], circuit_options) # FIXME: should we unwrap here?
|
23
32
|
end
|
24
33
|
end
|
25
34
|
end
|
@@ -13,21 +13,21 @@ module Trailblazer
|
|
13
13
|
#
|
14
14
|
# @note Do not override this method as it will be removed in future versions. Also, you will break tracing.
|
15
15
|
# @return Operation::Railway::Result binary result object
|
16
|
-
def call(*args)
|
17
|
-
return call_with_circuit_interface(*args) if
|
16
|
+
def call(options = {}, *args)
|
17
|
+
return call_with_circuit_interface(options, *args) if options.is_a?(Array) # This is kind of a hack that could be well hidden if Ruby had method overloading. Goal is to simplify the call/__call__ thing as we're fading out Operation::call anyway.
|
18
18
|
|
19
|
-
call_with_public_interface(*args)
|
19
|
+
call_with_public_interface(options, *args)
|
20
20
|
end
|
21
21
|
|
22
22
|
def call_with_public_interface(*args)
|
23
|
-
ctx = options_for_public_call(*args)
|
23
|
+
ctx = options_for_public_call(*args, flow_options())
|
24
24
|
|
25
25
|
# call the activity.
|
26
26
|
# This will result in invoking {::call_with_circuit_interface}.
|
27
27
|
# last_signal, (options, flow_options) = Activity::TaskWrap.invoke(self, [ctx, {}], {})
|
28
28
|
signal, (ctx, flow_options) = Activity::TaskWrap.invoke(
|
29
29
|
@activity,
|
30
|
-
[ctx,
|
30
|
+
[ctx, flow_options()],
|
31
31
|
exec_context: new
|
32
32
|
)
|
33
33
|
|
@@ -46,8 +46,13 @@ module Trailblazer
|
|
46
46
|
|
47
47
|
# Compile a Context object to be passed into the Activity::call.
|
48
48
|
# @private
|
49
|
-
def self.options_for_public_call(options
|
50
|
-
Trailblazer::Context.
|
49
|
+
def self.options_for_public_call(options, **flow_options)
|
50
|
+
Trailblazer::Context.for_circuit(options, {}, [options, flow_options], {})
|
51
|
+
end
|
52
|
+
|
53
|
+
# @semi=public
|
54
|
+
def flow_options
|
55
|
+
{context_alias: {}}
|
51
56
|
end
|
52
57
|
end
|
53
58
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
1
3
|
module Trailblazer
|
2
4
|
class Operation
|
3
5
|
module Trace
|
4
6
|
# @note The problem in this method is, we have redundancy with Operation::PublicCall
|
5
|
-
def self.call(operation,
|
6
|
-
ctx = PublicCall.options_for_public_call(
|
7
|
+
def self.call(operation, options)
|
8
|
+
ctx = PublicCall.options_for_public_call(options) # redundant with PublicCall::call.
|
7
9
|
|
8
|
-
stack, signal, (ctx, _flow_options) =
|
10
|
+
stack, signal, (ctx, _flow_options) = Developer::Trace.(operation, [ctx, {}])
|
9
11
|
|
10
12
|
result = Railway::Result(signal, ctx) # redundant with PublicCall::call.
|
11
13
|
|
@@ -18,20 +20,20 @@ module Trailblazer
|
|
18
20
|
# @public
|
19
21
|
#
|
20
22
|
# Operation.trace(params, current_user: current_user).wtf
|
21
|
-
def trace(
|
22
|
-
Trace.(self,
|
23
|
+
def trace(options)
|
24
|
+
Trace.(self, options)
|
23
25
|
end
|
24
26
|
|
25
27
|
# Presentation of the traced stack via the returned result object.
|
26
28
|
# This object is wrapped around the original result in {Trace.call}.
|
27
|
-
class Result < SimpleDelegator
|
29
|
+
class Result < ::SimpleDelegator
|
28
30
|
def initialize(result, stack)
|
29
31
|
super(result)
|
30
32
|
@stack = stack
|
31
33
|
end
|
32
34
|
|
33
35
|
def wtf
|
34
|
-
|
36
|
+
Developer::Trace::Present.(@stack)
|
35
37
|
end
|
36
38
|
|
37
39
|
def wtf?
|
data/test/call_test.rb
CHANGED
@@ -3,13 +3,32 @@ require "test_helper"
|
|
3
3
|
class ClassDependenciesTest < Minitest::Spec
|
4
4
|
#- Operation[] and Operation[]=
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
class Index < Trailblazer::Operation
|
7
|
+
extend ClassDependencies
|
8
8
|
|
9
|
-
|
9
|
+
self["model.class"] = Module
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
step ->(options, **) { options["a"] = options["model.class"] }
|
12
|
+
end
|
13
13
|
|
14
|
-
it {
|
14
|
+
it { Index.({}).inspect("a", "model.class").must_equal %{<Result:true [Module, Module] >} }
|
15
|
+
|
16
|
+
it "creates separate ctx for circuit interface" do
|
17
|
+
signal, (ctx, _) = Index.([{}, {}], {})
|
18
|
+
|
19
|
+
ctx["model.class"].inspect.must_equal %{Module} # FIXME: should this be here?
|
20
|
+
ctx[:a].inspect.must_equal %{Module}
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "inheritance" do
|
24
|
+
it "reader/setter read from separate config" do
|
25
|
+
subclass = Class.new(Index)
|
26
|
+
|
27
|
+
subclass["model.class"].must_equal Module
|
28
|
+
subclass["model.class"] = Class
|
29
|
+
subclass["model.class"].must_equal Class
|
30
|
+
Index["model.class"].must_equal Module
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
15
34
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class DocsClassFieldsTest < Minitest::Spec
|
4
|
+
module A
|
5
|
+
class AlwaysTrue
|
6
|
+
def self.call(params)
|
7
|
+
true
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
class Insert < Trailblazer::Operation
|
13
|
+
extend ClassDependencies
|
14
|
+
|
15
|
+
self[:name] = :insert
|
16
|
+
end
|
17
|
+
|
18
|
+
#:create
|
19
|
+
class Create < Trailblazer::Operation
|
20
|
+
extend ClassDependencies
|
21
|
+
|
22
|
+
# Configure some dependency on class level
|
23
|
+
self[:validator] = AlwaysTrue
|
24
|
+
|
25
|
+
step :validate
|
26
|
+
step Subprocess(Insert)
|
27
|
+
|
28
|
+
#:validate
|
29
|
+
def validate(ctx, validator:, params:, **)
|
30
|
+
validator.(params)
|
31
|
+
end
|
32
|
+
#:validate end
|
33
|
+
end
|
34
|
+
#:create end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "what" do
|
38
|
+
Create = A::Create
|
39
|
+
|
40
|
+
ctx = {params: {name: "Yogi"}}
|
41
|
+
|
42
|
+
#:invoke
|
43
|
+
signal, (ctx, _) = Create.([ctx, {}])
|
44
|
+
|
45
|
+
puts ctx[:validator] #=> AlwaysTrue
|
46
|
+
#:invoke end
|
47
|
+
|
48
|
+
puts ctx[:name] #=> insert
|
49
|
+
|
50
|
+
signal.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Success semantic=:success>}
|
51
|
+
ctx[:validator].inspect.must_equal %{DocsClassFieldsTest::A::AlwaysTrue}
|
52
|
+
ctx[:name].inspect.must_equal %{:insert}
|
53
|
+
end
|
54
|
+
end
|
data/test/step_test.rb
CHANGED
@@ -173,11 +173,12 @@ class StepTest < Minitest::Spec
|
|
173
173
|
#-
|
174
174
|
# not existent :name
|
175
175
|
it do
|
176
|
-
assert_raises Trailblazer::Activity::DSL::Linear::Sequence::IndexError do
|
176
|
+
op = assert_raises Trailblazer::Activity::DSL::Linear::Sequence::IndexError do
|
177
177
|
Class.new(Trailblazer::Operation) do
|
178
178
|
step :a, before: "I don't exist!"
|
179
179
|
end
|
180
|
-
end
|
180
|
+
end
|
181
|
+
assert_match /<Trailblazer::Activity::DSL::Linear::Sequence::IndexError: "I don't exist!" is not a valid step ID. Did you mean any of these ?/, op.inspect
|
181
182
|
end
|
182
183
|
|
183
184
|
#---
|
data/test/test_helper.rb
CHANGED
data/test/trace_test.rb
CHANGED
@@ -14,44 +14,39 @@ class TraceTest < Minitest::Spec
|
|
14
14
|
end
|
15
15
|
# raise Create["__task_wraps__"].inspect
|
16
16
|
|
17
|
-
it "allows using low-level
|
18
|
-
|
19
|
-
|
20
|
-
stack, = Trailblazer::Activity::Trace.(
|
17
|
+
it "allows using low-level Operation::Trace" do
|
18
|
+
result = Trailblazer::Operation::Trace.(
|
21
19
|
Create,
|
22
|
-
|
23
|
-
{a_return: true, params: {}},
|
24
|
-
{}
|
25
|
-
]
|
20
|
+
{ a_return: true, params: {} },
|
26
21
|
)
|
27
22
|
|
28
|
-
|
23
|
+
output = result.wtf
|
29
24
|
|
30
25
|
output.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
26
|
+
|-- Start.default
|
27
|
+
|-- Create.task.a
|
28
|
+
|-- MyNested
|
29
|
+
| |-- Start.default
|
30
|
+
| |-- B.task.b
|
31
|
+
| |-- B.task.e
|
32
|
+
| `-- End.success
|
33
|
+
|-- Create.task.c
|
34
|
+
|-- Create.task.params
|
35
|
+
`-- End.failure}
|
41
36
|
end
|
42
37
|
|
43
38
|
it "Operation::trace" do
|
44
39
|
result = Create.trace(params: {x: 1}, a_return: true)
|
45
40
|
result.wtf.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
41
|
+
|-- Start.default
|
42
|
+
|-- Create.task.a
|
43
|
+
|-- MyNested
|
44
|
+
| |-- Start.default
|
45
|
+
| |-- B.task.b
|
46
|
+
| |-- B.task.e
|
47
|
+
| `-- End.success
|
48
|
+
|-- Create.task.c
|
49
|
+
|-- Create.task.params
|
50
|
+
`-- End.success}
|
56
51
|
end
|
57
52
|
end
|
@@ -4,7 +4,7 @@ require 'trailblazer/operation/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "trailblazer-operation"
|
7
|
-
spec.version = Trailblazer::
|
7
|
+
spec.version = Trailblazer::Operation::VERSION
|
8
8
|
spec.authors = ["Nick Sutterer"]
|
9
9
|
spec.email = ["apotonick@gmail.com"]
|
10
10
|
spec.description = %q(Trailblazer's operation object.)
|
@@ -14,16 +14,17 @@ Gem::Specification.new do |spec|
|
|
14
14
|
|
15
15
|
spec.files = `git ls-files`.split($/)
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
-
spec.test_files = spec.files.grep(%r{^(test
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_dependency "trailblazer-activity-dsl-linear", ">= 0.
|
20
|
+
spec.add_dependency "trailblazer-activity-dsl-linear", ">= 0.2.6", "< 1.0.0"
|
21
|
+
spec.add_dependency "trailblazer-activity", ">= 0.10.0", "< 1.0.0"
|
22
|
+
spec.add_dependency "trailblazer-developer", ">= 0.0.8"
|
21
23
|
|
22
24
|
spec.add_development_dependency "bundler"
|
23
25
|
spec.add_development_dependency "minitest"
|
24
26
|
spec.add_development_dependency "rake"
|
25
27
|
spec.add_development_dependency "rubocop"
|
26
|
-
spec.add_development_dependency "trailblazer-developer", ">= 0.0.3"
|
27
28
|
|
28
29
|
spec.required_ruby_version = ">= 2.1.0"
|
29
30
|
end
|
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.
|
4
|
+
version: 0.6.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:
|
11
|
+
date: 2020-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trailblazer-activity-dsl-linear
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.2.6
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.0.0
|
@@ -26,26 +26,46 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.2.6
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.0.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: trailblazer-activity
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
40
|
-
|
39
|
+
version: 0.10.0
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.0.0
|
43
|
+
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
47
|
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 0.10.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.0.0
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
54
|
+
name: trailblazer-developer
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.0.8
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.0.8
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: bundler
|
49
69
|
requirement: !ruby/object:Gem::Requirement
|
50
70
|
requirements:
|
51
71
|
- - ">="
|
@@ -59,7 +79,7 @@ dependencies:
|
|
59
79
|
- !ruby/object:Gem::Version
|
60
80
|
version: '0'
|
61
81
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
82
|
+
name: minitest
|
63
83
|
requirement: !ruby/object:Gem::Requirement
|
64
84
|
requirements:
|
65
85
|
- - ">="
|
@@ -73,7 +93,7 @@ dependencies:
|
|
73
93
|
- !ruby/object:Gem::Version
|
74
94
|
version: '0'
|
75
95
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
96
|
+
name: rake
|
77
97
|
requirement: !ruby/object:Gem::Requirement
|
78
98
|
requirements:
|
79
99
|
- - ">="
|
@@ -87,19 +107,19 @@ dependencies:
|
|
87
107
|
- !ruby/object:Gem::Version
|
88
108
|
version: '0'
|
89
109
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
110
|
+
name: rubocop
|
91
111
|
requirement: !ruby/object:Gem::Requirement
|
92
112
|
requirements:
|
93
113
|
- - ">="
|
94
114
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0
|
115
|
+
version: '0'
|
96
116
|
type: :development
|
97
117
|
prerelease: false
|
98
118
|
version_requirements: !ruby/object:Gem::Requirement
|
99
119
|
requirements:
|
100
120
|
- - ">="
|
101
121
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0
|
122
|
+
version: '0'
|
103
123
|
description: Trailblazer's operation object.
|
104
124
|
email:
|
105
125
|
- apotonick@gmail.com
|
@@ -130,6 +150,7 @@ files:
|
|
130
150
|
- test/call_test.rb
|
131
151
|
- test/callable_test.rb
|
132
152
|
- test/class_dependencies_test.rb
|
153
|
+
- test/docs/class_dependencies_test.rb
|
133
154
|
- test/docs/doormat_test.rb
|
134
155
|
- test/docs/macaroni_test.rb
|
135
156
|
- test/docs/operation_test.rb
|
@@ -173,8 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
194
|
- !ruby/object:Gem::Version
|
174
195
|
version: '0'
|
175
196
|
requirements: []
|
176
|
-
|
177
|
-
rubygems_version: 2.7.3
|
197
|
+
rubygems_version: 3.0.8
|
178
198
|
signing_key:
|
179
199
|
specification_version: 4
|
180
200
|
summary: Trailblazer's operation object with railway flow and integrated error handling.
|
@@ -183,6 +203,7 @@ test_files:
|
|
183
203
|
- test/call_test.rb
|
184
204
|
- test/callable_test.rb
|
185
205
|
- test/class_dependencies_test.rb
|
206
|
+
- test/docs/class_dependencies_test.rb
|
186
207
|
- test/docs/doormat_test.rb
|
187
208
|
- test/docs/macaroni_test.rb
|
188
209
|
- test/docs/operation_test.rb
|