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 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