trailblazer-operation 0.5.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|