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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0cc08959bec35098c45918f83eba640b3557e77f995864c58d3b1a02f199b946
4
- data.tar.gz: f1ce8be398f2156b2b3d5bebf2ee62cf36b4c9e661c9cfc88fbffa9c9f0832ce
3
+ metadata.gz: b3e5248a8515b6f1255116f82ba2b0fc2836b373dcbe03d38fb5c0b93f94c82a
4
+ data.tar.gz: 185922dd1990ae902d2ed5fd4639c0d2788913d63036eb71542945b15eb1995c
5
5
  SHA512:
6
- metadata.gz: 73d31c57d4c5c5e8e35d2f2e4a9da147ce62a4238918bbd8922b5d479918a3ca20dd5437eebe3dcb88f5f0ab97977693f50252676ee312a9759b6201e58e0447
7
- data.tar.gz: 110a6eea4813a1c6e22595bd5be9fd6bd0d3bbe4040f938bb0aac92396570a9565b4a7baca44ad50729881627872135b698532045938eccb31a67adab1e0f301
6
+ metadata.gz: a4f01d8601c8e97e72f1cabb52adabd9371d416472fa1784573aa13cc1252108f2c5a6f12157e7e3379f21cfb7b7ebe2d5f1213813473a6796f05a6652b8cc55
7
+ data.tar.gz: ff7522a5ec8c73ad8ec76ef2e3f2019309fa2d9f708463c9e6b96a83cc07ac8cc6878714b4f730d4701848b69ceec11a999b65c5576514292f0da1b56c27b41a
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
17
  /**/*.log
18
+ .rubocop-*yml
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: "../trailblazer-developer"
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-context", path: "../trailblazer-context"
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 Skill
4
- # The class-level skill container: Operation::[], ::[]=.
5
- module Accessors
6
- # :private:
7
- def skills
8
- @skills ||= {}
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
- extend Forwardable
12
- def_delegators :skills, :[], :[]=
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
- @skills.each { |name, value| ctx[name] ||= value } # this resembles the behavior in 2.0. we didn't say we liked it.
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 args.any? && args[0].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.
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.for(options, [options, {}], {})
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, *args)
6
- ctx = PublicCall.options_for_public_call(*args) # redundant with PublicCall::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) = Activity::Trace.(operation, [ctx, {}])
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(*args)
22
- Trace.(self, *args)
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
- Trailblazer::Activity::Trace::Present.(@stack)
36
+ Developer::Trace::Present.(@stack)
35
37
  end
36
38
 
37
39
  def wtf?
@@ -1,7 +1,5 @@
1
1
  module Trailblazer
2
- module Version
3
- module Operation
4
- VERSION = "0.5.2"
5
- end
2
+ class Operation
3
+ VERSION = "0.6.3"
6
4
  end
7
5
  end
@@ -1,4 +1,4 @@
1
- require "test_helper"
1
+ require "test_helper"
2
2
 
3
3
  class CallTest < Minitest::Spec
4
4
  class Create < Trailblazer::Operation
@@ -3,13 +3,32 @@ require "test_helper"
3
3
  class ClassDependenciesTest < Minitest::Spec
4
4
  #- Operation[] and Operation[]=
5
5
 
6
- # class Index < Trailblazer::Operation
7
- # extend ClassDependencies
6
+ class Index < Trailblazer::Operation
7
+ extend ClassDependencies
8
8
 
9
- # self["model.class"] = Module
9
+ self["model.class"] = Module
10
10
 
11
- # step ->(options, **) { options["a"] = options["model.class"] }
12
- # end
11
+ step ->(options, **) { options["a"] = options["model.class"] }
12
+ end
13
13
 
14
- it { skip "https://trello.com/c/t8bUJlqb/25-op-class-dependencies"; Index.({}).inspect("a", "model.class").must_equal %{<Result:true [Module, Module] >} }
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
@@ -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.inspect.must_equal %{#<Trailblazer::Activity::DSL::Linear::Sequence::IndexError: "I don't exist!">}
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
  #---
@@ -1,7 +1,9 @@
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
2
+ require "trailblazer/operation"
3
+
1
4
  require "pp"
2
5
 
3
6
  require "minitest/autorun"
4
- require "trailblazer/operation"
5
7
  require "trailblazer/activity/testing"
6
8
  require "trailblazer/developer/render/linear"
7
9
 
@@ -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 Activity::Trace" do
18
- ->(*args) { puts "@@@@@ #{args.last.inspect}"; Create.__call__(*args) }
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
- puts output = Trailblazer::Activity::Trace::Present.(stack)
23
+ output = result.wtf
29
24
 
30
25
  output.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
31
- |-- Start.default
32
- |-- Create.task.a
33
- |-- MyNested
34
- | |-- Start.default
35
- | |-- B.task.b
36
- | |-- B.task.e
37
- | `-- End.success
38
- |-- Create.task.c
39
- |-- Create.task.params
40
- `-- End.failure}
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
- |-- Start.default
47
- |-- Create.task.a
48
- |-- MyNested
49
- | |-- Start.default
50
- | |-- B.task.b
51
- | |-- B.task.e
52
- | `-- End.success
53
- |-- Create.task.c
54
- |-- Create.task.params
55
- `-- End.success}
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::Version::Operation::VERSION
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|spec|features)/})
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.1.6", "< 1.0.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.5.2
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: 2019-07-19 00:00:00.000000000 Z
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.1.6
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.1.6
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: bundler
34
+ name: trailblazer-activity
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
40
- type: :development
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: '0'
49
+ version: 0.10.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.0
47
53
  - !ruby/object:Gem::Dependency
48
- name: minitest
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: rake
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: rubocop
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: trailblazer-developer
110
+ name: rubocop
91
111
  requirement: !ruby/object:Gem::Requirement
92
112
  requirements:
93
113
  - - ">="
94
114
  - !ruby/object:Gem::Version
95
- version: 0.0.3
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.0.3
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
- rubyforge_project:
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