trailblazer-operation 0.8.0 → 0.10.0

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: 2d7d499269759535250f16ea0d6bcf6c23542ad4cc5be0e5ffda4d2e707d33ed
4
- data.tar.gz: e92315fb7214bc17eda181a09ea1388c20a78bd74cc96e0f7312df30f919accf
3
+ metadata.gz: 055b4f6ef1ce80319468ccbb1299dadf1ff82429179381904780a1d04bcda48f
4
+ data.tar.gz: c3d25c70992d811625a162c5dce4bc5751df2665034b80d6739b4153860914ca
5
5
  SHA512:
6
- metadata.gz: '098ee61ee7be942eecc08843b3d88bb93c778774f6f69598bcb418473d4a264619a1461f7c0de8fc6c7d246c6b7f9cb546f000bc474055e3611bd0920d9af33d'
7
- data.tar.gz: 3642d73a74df00b44eeb3762e0f2fd2751b5f6d0385ff3cb26c8699b9d417d9b7603273832604567c69cd276ff396d89f93b516b54f476936088cdbd1343a0b2
6
+ metadata.gz: 4e1450dc8761312a31ebb9113a1086e4f51f501a8fbc178f597b9720b14a767e7cd4b42a833b42b2ed065b7c41cd8f9bb19c81ddd808020c4ab9f5643c0375c0
7
+ data.tar.gz: 7ee732afe996545413207ea93ece417b1d5ccb74b51820048957f73c22d8ea53eb61a01c1d96531056e8bbd407e5d1c004382e36132e5dfa435468b24192981c
@@ -5,13 +5,12 @@ jobs:
5
5
  strategy:
6
6
  fail-fast: false
7
7
  matrix:
8
- # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
9
- ruby: [2.5, 2.6, 2.7, '3.0', '3.1', head, jruby]
8
+ ruby: [2.5, 2.6, 2.7, '3.0', '3.1', '3.2', 'jruby']
10
9
  runs-on: ubuntu-latest
11
10
  steps:
12
- - uses: actions/checkout@v2
11
+ - uses: actions/checkout@v3
13
12
  - uses: ruby/setup-ruby@v1
14
13
  with:
15
14
  ruby-version: ${{ matrix.ruby }}
16
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
15
+ bundler-cache: true
17
16
  - run: bundle exec rake
data/CHANGES.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## 0.10.0
2
+
3
+ * Require `trailblazer-activity-dsl-linear-1.2.0`.
4
+ * Remove `Railway::Macaroni`.
5
+ * Remove `Operation::Callable`.
6
+ * Introduce `Operation::INITIAL_WRAP_STATIC` that is computed once at compile-time, not
7
+ with every `#call`.
8
+
9
+ ## 0.9.0
10
+
11
+ * Use `trailblazer-activity-dsl-linear` 1.1.0.
12
+ * Pass `:container_activity` to `TaskWrap.invoke` instead of the superseded `:static_wrap` option.
13
+
1
14
  ## 0.8.0
2
15
 
3
16
  * Use `trailblazer-activity-dsl-linear` 1.0.0.
data/Gemfile CHANGED
@@ -3,21 +3,9 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in trailblazer.gemspec
4
4
  gemspec
5
5
 
6
- gem "multi_json"
6
+ # gem "trailblazer-developer", path: "../trailblazer-developer"
7
+ # gem "trailblazer-activity", path: "../trailblazer-activity"
8
+ # gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
7
9
 
8
- gem "dry-auto_inject"
9
-
10
- gem "benchmark-ips"
11
- gem "minitest-line"
12
-
13
- # gem "trailblazer-developer", path: "../trailblazer-developer"
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"
18
- # gem "trailblazer-activity", github: "trailblazer/trailblazer-activity"
19
-
20
- # gem "trailblazer-macro", path: "../trailblazer-macro"
21
- # gem "trailblazer-activity", path: "../trailblazer-activity"
22
- # gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
23
- # gem "trailblazer-declarative"
10
+ # gem "trailblazer-activity", github: "trailblazer/trailblazer-activity"
11
+ # gem "trailblazer-developer", github: "trailblazer/trailblazer-developer"
@@ -25,7 +25,7 @@ class Trailblazer::Operation
25
25
  end
26
26
 
27
27
  private def context_for_fields(fields, (ctx, flow_options), **)
28
- ctx_with_fields = Trailblazer::Context(fields, ctx, flow_options[:context_options]) # TODO: redundant to otions_for_public_call.
28
+ ctx_with_fields = Trailblazer::Context(fields, ctx, flow_options[:context_options]) # TODO: redundant to options_for_public_call.
29
29
  end
30
30
 
31
31
  def call_with_circuit_interface((ctx, flow_options), **circuit_options)
@@ -41,7 +41,8 @@ module Trailblazer
41
41
  self,
42
42
  [ctx, flow_options],
43
43
  exec_context: new,
44
- wrap_static: initial_wrap_static,
44
+ # wrap_static: initial_wrap_static,
45
+ container_activity: Activity::TaskWrap.container_activity_for(self, wrap_static: initial_wrap_static)
45
46
  )
46
47
 
47
48
  # Result is successful if the activity ended with an End event derived from Railway::End::Success.
@@ -76,16 +77,14 @@ module Trailblazer
76
77
  end
77
78
 
78
79
  # TODO: remove when we stop supporting < 3.0.
80
+ # alternatively, ctx aliasing is only available for Ruby > 2.7.
79
81
  def call_with_flow_options(options, flow_options)
80
82
  raise "[Trailblazer] `Operation.call_with_flow_options is deprecated in Ruby 3.0. Use `Operation.(options, flow_options)`" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0.0")
81
83
  call_with_public_interface(options, flow_options, {invoke_class: Activity::TaskWrap})
82
84
  end
83
85
 
84
- def initial_wrap_static(*)
85
- Activity::TaskWrap::Pipeline.new([Activity::TaskWrap::Pipeline.Row("task_wrap.call_task", method(:call_task))])
86
- end
87
-
88
- def call_task(wrap_ctx, original_args) # DISCUSS: copied from {TaskWrap.call_task}.
86
+ # @private
87
+ def self.call_task(wrap_ctx, original_args) # DISCUSS: copied from {TaskWrap.call_task}.
89
88
  op = wrap_ctx[:task]
90
89
 
91
90
  original_arguments, original_circuit_options = original_args
@@ -99,5 +98,11 @@ module Trailblazer
99
98
 
100
99
  return wrap_ctx, original_args
101
100
  end
101
+
102
+ INITIAL_WRAP_STATIC = Activity::TaskWrap::Pipeline.new([Activity::TaskWrap::Pipeline.Row("task_wrap.call_task", method(:call_task))])
103
+
104
+ def initial_wrap_static
105
+ INITIAL_WRAP_STATIC
106
+ end
102
107
  end
103
108
  end
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Version
3
3
  module Operation
4
- VERSION = "0.8.0"
4
+ VERSION = "0.10.0"
5
5
  end
6
6
  end
7
7
  end
@@ -2,6 +2,9 @@ require "trailblazer/activity/dsl/linear"
2
2
  require 'forwardable'
3
3
  require 'trailblazer/operation/version'
4
4
 
5
+ #
6
+ # Developer's docs: https://trailblazer.to/2.1/docs/internals.html#internals-operation
7
+ #
5
8
  module Trailblazer
6
9
  # As opposed to {Activity::Railway} and {Activity::FastTrack} an operation
7
10
  # maintains different terminus subclasses.
@@ -57,5 +60,3 @@ require "trailblazer/operation/deprecated_macro" # TODO: remove in 2.2.
57
60
 
58
61
  require "trailblazer/operation/result"
59
62
  require "trailblazer/operation/railway"
60
-
61
- require "trailblazer/operation/railway/macaroni"
@@ -20,7 +20,7 @@ class DeclarativeApiTest < Minitest::Spec
20
20
  end
21
21
 
22
22
  MyOp.({})
23
- MyOp.global.inspect.must_equal %{[:call, :model]}
23
+ assert_equal MyOp.global.inspect, %{[:call, :model]}
24
24
  end
25
25
 
26
26
  #---
data/test/step_test.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require "test_helper"
2
2
 
3
+ # TODO: throw away this test, most of it is tested in {dsl}.
4
+
3
5
  # Tests
4
6
  # --- step ->(*) { snippet }
5
7
  # --- step Callable
@@ -40,10 +42,18 @@ class StepTest < Minitest::Spec
40
42
 
41
43
  it { Create.(a: 1, b: 2, c: 3, d: 4, e: 5).inspect("a", "b", "c", "d", "e").must_equal "<Result:true [1, 2, 3, 4, 5] >" }
42
44
 
43
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.7.0")
44
- it { Trailblazer::Developer.railway(Create).gsub(/0x.+?step_test.rb/, "").gsub(/\)\s.+?step_test.rb/, ") test/step_test.rb").must_equal %{[>#<Proc::30 (lambda)>,>StepTest::Callable,>#<Method: StepTest::Implementation.c(options, c: ..., **) test/step_test.rb:18>,>d,>MyMacro]} }
45
- else
46
- it { Trailblazer::Developer.railway(Create).gsub(/0x.+?step_test.rb/, "").must_equal %{[>#<Proc::30 (lambda)>,>StepTest::Callable,>#<Method: StepTest::Implementation.c>,>d,>MyMacro]} }
45
+ it "allows {Developer.railway}" do
46
+ output = Trailblazer::Developer.railway(Create)
47
+ .gsub(/0x.+?step_test.rb/, "")
48
+ .gsub(/\)\s.+?step_test.rb/, ") test/step_test.rb")
49
+
50
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.2.0")
51
+ assert_equal output, %([>#<Proc::32 (lambda)>,>StepTest::Callable,>#<Method: StepTest::Implementation.c(options, c: ...) test/step_test.rb:20>,>d,>MyMacro])
52
+ elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.7.0")
53
+ assert_equal output, %([>#<Proc::32 (lambda)>,>StepTest::Callable,>#<Method: StepTest::Implementation.c(options, c: ..., **) test/step_test.rb:20>,>d,>MyMacro])
54
+ else
55
+ assert_equal output, %([>#<Proc::32 (lambda)>,>StepTest::Callable,>#<Method: StepTest::Implementation.c>,>d,>MyMacro])
56
+ end
47
57
  end
48
58
 
49
59
  #---
@@ -173,27 +183,6 @@ class StepTest < Minitest::Spec
173
183
  # FIXME: we have all fast track ends here.
174
184
  it { skip; Ii["__activity__"].circuit.instance_variable_get(:@map).size.must_equal 6 }
175
185
 
176
- #---
177
- #-
178
- # not existent :name
179
- it do
180
- op = assert_raises Trailblazer::Activity::Adds::IndexError do
181
- class InvalidStep < Trailblazer::Operation
182
- step :a, before: "I don't exist!"
183
- end
184
- end
185
-
186
- error_message = %{#<Trailblazer::Activity::Adds::IndexError: StepTest::InvalidStep:
187
- \e[31m\"I don't exist!\" is not a valid step ID. Did you mean any of these ?\e[0m
188
- \e[32m\"Start.default\"
189
- \"End.success\"
190
- \"End.pass_fast\"
191
- \"End.fail_fast\"
192
- \"End.failure\"\e[0m>}
193
-
194
- assert_match error_message, op.inspect
195
- end
196
-
197
186
  #---
198
187
  #- :name
199
188
  #- step :whatever, id: :validate
data/test/trace_test.rb CHANGED
@@ -8,7 +8,7 @@ class TraceTest < Minitest::Spec
8
8
 
9
9
  class Create < Trailblazer::Operation
10
10
  step ->(options, a_return:, **) { options[:a] = a_return }, id: "Create.task.a"
11
- step({task: B, id: "MyNested"}, B.to_h[:outputs][0] => Track(:success))
11
+ step Subprocess(B), id: "MyNested"
12
12
  step ->(options, **) { options[:c] = true }, id: "Create.task.c"
13
13
  step ->(_options, params:, **) { params.any? }, id: "Create.task.params"
14
14
  end
@@ -22,32 +22,32 @@ class TraceTest < Minitest::Spec
22
22
 
23
23
  output = result.wtf
24
24
 
25
- output.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
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}
25
+ assert_equal output.gsub(/0x\w+/, "").gsub(/@.+_test/, ""), %{TraceTest::Create
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}
36
36
  end
37
37
 
38
38
  it "Operation::trace" do
39
39
  result = Create.trace(params: {x: 1}, a_return: true)
40
- result.wtf.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
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}
40
+ assert_equal result.wtf.gsub(/0x\w+/, "").gsub(/@.+_test/, ""), %{TraceTest::Create
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}
51
51
  end
52
52
 
53
53
  it "Operation.wtf?" do
@@ -56,17 +56,17 @@ class TraceTest < Minitest::Spec
56
56
  result = Create.wtf?(params: {x: 1}, a_return: true)
57
57
  end
58
58
 
59
- output.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
60
- |-- \e[32mStart.default\e[0m
61
- |-- \e[32mCreate.task.a\e[0m
62
- |-- MyNested
63
- | |-- \e[32mStart.default\e[0m
64
- | |-- \e[32mB.task.b\e[0m
65
- | |-- \e[32mB.task.e\e[0m
66
- | `-- End.success
67
- |-- \e[32mCreate.task.c\e[0m
68
- |-- \e[32mCreate.task.params\e[0m
69
- `-- End.success
59
+ assert_equal output.gsub(/0x\w+/, "").gsub(/@.+_test/, ""), %{TraceTest::Create
60
+ |-- \e[32mStart.default\e[0m
61
+ |-- \e[32mCreate.task.a\e[0m
62
+ |-- MyNested
63
+ | |-- \e[32mStart.default\e[0m
64
+ | |-- \e[32mB.task.b\e[0m
65
+ | |-- \e[32mB.task.e\e[0m
66
+ | `-- End.success
67
+ |-- \e[32mCreate.task.c\e[0m
68
+ |-- \e[32mCreate.task.params\e[0m
69
+ `-- End.success
70
70
  }
71
71
 
72
72
  result.success?.must_equal true
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ["apotonick@gmail.com"]
10
10
  spec.description = %q(Trailblazer's operation object.)
11
11
  spec.summary = %q(Trailblazer's operation object with railway flow and integrated error handling.)
12
- spec.homepage = "http://trailblazer.to"
12
+ spec.homepage = "https://trailblazer.to/2.1/docs/operation.html"
13
13
  spec.license = "MIT"
14
14
 
15
15
  spec.files = `git ls-files`.split($/)
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
17
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", ">= 1.0.0", "< 1.1.0"
21
- spec.add_dependency "trailblazer-developer", ">= 0.0.26"
20
+ spec.add_dependency "trailblazer-activity-dsl-linear", ">= 1.2.0", "< 1.4.0"
21
+ spec.add_dependency "trailblazer-developer"
22
22
 
23
23
  spec.add_development_dependency "bundler"
24
24
  spec.add_development_dependency "minitest"
25
+ spec.add_development_dependency "minitest-line"
25
26
  spec.add_development_dependency "rake"
26
- spec.add_development_dependency "rubocop"
27
27
 
28
- spec.required_ruby_version = ">= 2.1.0"
28
+ spec.required_ruby_version = ">= 2.5.0"
29
29
  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.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-22 00:00:00.000000000 Z
11
+ date: 2023-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trailblazer-activity-dsl-linear
@@ -16,34 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0
19
+ version: 1.2.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.1.0
22
+ version: 1.4.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: 1.0.0
29
+ version: 1.2.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.1.0
32
+ version: 1.4.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: trailblazer-developer
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.0.26
39
+ version: '0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 0.0.26
46
+ version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +73,7 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: rake
76
+ name: minitest-line
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -87,7 +87,7 @@ dependencies:
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: rubocop
90
+ name: rake
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
@@ -109,19 +109,15 @@ extra_rdoc_files: []
109
109
  files:
110
110
  - ".github/workflows/ci.yml"
111
111
  - ".gitignore"
112
- - ".rubocop.yml"
113
- - ".rubocop_todo.yml"
114
112
  - CHANGES.md
115
113
  - Gemfile
116
114
  - README.md
117
115
  - Rakefile
118
116
  - lib/trailblazer/operation.rb
119
- - lib/trailblazer/operation/callable.rb
120
117
  - lib/trailblazer/operation/class_dependencies.rb
121
118
  - lib/trailblazer/operation/deprecated_macro.rb
122
119
  - lib/trailblazer/operation/public_call.rb
123
120
  - lib/trailblazer/operation/railway.rb
124
- - lib/trailblazer/operation/railway/macaroni.rb
125
121
  - lib/trailblazer/operation/result.rb
126
122
  - lib/trailblazer/operation/trace.rb
127
123
  - lib/trailblazer/operation/version.rb
@@ -151,7 +147,7 @@ files:
151
147
  - test/wiring/defaults_test.rb
152
148
  - test/wiring/subprocess_test.rb
153
149
  - trailblazer-operation.gemspec
154
- homepage: http://trailblazer.to
150
+ homepage: https://trailblazer.to/2.1/docs/operation.html
155
151
  licenses:
156
152
  - MIT
157
153
  metadata: {}
@@ -163,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
159
  requirements:
164
160
  - - ">="
165
161
  - !ruby/object:Gem::Version
166
- version: 2.1.0
162
+ version: 2.5.0
167
163
  required_rubygems_version: !ruby/object:Gem::Requirement
168
164
  requirements:
169
165
  - - ">="
data/.rubocop.yml DELETED
@@ -1,8 +0,0 @@
1
- inherit_from:
2
- - https://raw.githubusercontent.com/trailblazer/meta/master/rubocop.yml
3
- - .rubocop_todo.yml
4
-
5
- Naming/MethodName:
6
- Exclude:
7
- - 'lib/trailblazer/operation/inject.rb'
8
- - 'lib/trailblazer/operation.rb'
data/.rubocop_todo.yml DELETED
@@ -1,223 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2019-04-05 17:28:56 +1100 using RuboCop version 0.58.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 1
10
- # Configuration parameters: Include.
11
- # Include: **/*.gemspec
12
- Gemspec/RequiredRubyVersion:
13
- Exclude:
14
- - 'trailblazer-operation.gemspec'
15
-
16
- # Offense count: 5
17
- # Cop supports --auto-correct.
18
- Layout/CommentIndentation:
19
- Exclude:
20
- - 'lib/trailblazer/operation/version.rb'
21
- - 'test/wiring/defaults_test.rb'
22
-
23
- # Offense count: 3
24
- # Cop supports --auto-correct.
25
- # Configuration parameters: AllowAdjacentOneLineDefs, NumberOfEmptyLines.
26
- Layout/EmptyLineBetweenDefs:
27
- Exclude:
28
- - 'lib/trailblazer/operation.rb'
29
-
30
- # Offense count: 1
31
- # Cop supports --auto-correct.
32
- Layout/EmptyLines:
33
- Exclude:
34
- - 'lib/trailblazer/operation.rb'
35
-
36
- # Offense count: 1
37
- # Cop supports --auto-correct.
38
- # Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
39
- Layout/ExtraSpacing:
40
- Exclude:
41
- - 'lib/trailblazer/operation.rb'
42
-
43
- # Offense count: 2
44
- # Cop supports --auto-correct.
45
- Layout/SpaceBeforeSemicolon:
46
- Exclude:
47
- - 'lib/trailblazer/operation.rb'
48
-
49
- # Offense count: 2
50
- # Cop supports --auto-correct.
51
- # Configuration parameters: EnforcedStyle.
52
- # SupportedStyles: space, no_space
53
- Layout/SpaceInsideParens:
54
- Exclude:
55
- - 'lib/trailblazer/operation.rb'
56
-
57
- # Offense count: 2
58
- Lint/ShadowingOuterLocalVariable:
59
- Exclude:
60
- - 'lib/trailblazer/operation/deprecated_macro.rb'
61
- - 'lib/trailblazer/operation/public_call.rb'
62
-
63
- # Offense count: 1
64
- # Cop supports --auto-correct.
65
- # Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
66
- Lint/UnusedBlockArgument:
67
- Exclude:
68
- - 'lib/trailblazer/operation/inspect.rb'
69
-
70
- # Offense count: 2
71
- Lint/UselessAssignment:
72
- Exclude:
73
- - 'lib/trailblazer/operation/public_call.rb'
74
- - 'lib/trailblazer/operation/trace.rb'
75
-
76
- # Offense count: 46
77
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
78
- # URISchemes: http, https
79
- Metrics/LineLength:
80
- Max: 255
81
-
82
- # Offense count: 2
83
- Naming/ConstantName:
84
- Exclude:
85
- - 'lib/trailblazer/operation/inspect.rb'
86
- - 'lib/trailblazer/operation/version.rb'
87
-
88
- # Offense count: 1
89
- # Cop supports --auto-correct.
90
- Performance/StringReplacement:
91
- Exclude:
92
- - 'lib/trailblazer/operation/inspect.rb'
93
-
94
- # Offense count: 2
95
- # Cop supports --auto-correct.
96
- Style/BlockComments:
97
- Exclude:
98
- - 'test/docs/wiring_test.rb'
99
-
100
- # Offense count: 3
101
- # Cop supports --auto-correct.
102
- # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods.
103
- # SupportedStyles: line_count_based, semantic, braces_for_chaining
104
- # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
105
- # FunctionalMethods: let, let!, subject, watch
106
- # IgnoredMethods: lambda, proc, it
107
- Style/BlockDelimiters:
108
- Exclude:
109
- - 'lib/trailblazer/operation/inspect.rb'
110
- - 'test/step_test.rb'
111
-
112
- # Offense count: 1
113
- # Cop supports --auto-correct.
114
- # Configuration parameters: EnforcedStyle.
115
- # SupportedStyles: braces, no_braces, context_dependent
116
- Style/BracesAroundHashParameters:
117
- Exclude:
118
- - 'lib/trailblazer/operation/public_call.rb'
119
-
120
- # Offense count: 1
121
- # Cop supports --auto-correct.
122
- # Configuration parameters: EnforcedStyle.
123
- # SupportedStyles: is_a?, kind_of?
124
- Style/ClassCheck:
125
- Exclude:
126
- - 'lib/trailblazer/operation/railway.rb'
127
-
128
- # Offense count: 2
129
- Style/CommentedKeyword:
130
- Exclude:
131
- - 'lib/trailblazer/operation/railway.rb'
132
-
133
- # Offense count: 1
134
- # Cop supports --auto-correct.
135
- Style/DefWithParentheses:
136
- Exclude:
137
- - 'lib/trailblazer/operation.rb'
138
-
139
- # Offense count: 1
140
- # Cop supports --auto-correct.
141
- Style/ExpandPathArguments:
142
- Exclude:
143
- - 'trailblazer-operation.gemspec'
144
-
145
- # Offense count: 3
146
- # Cop supports --auto-correct.
147
- # Configuration parameters: EnforcedStyle.
148
- # SupportedStyles: format, sprintf, percent
149
- Style/FormatString:
150
- Exclude:
151
- - 'lib/trailblazer/operation/inspect.rb'
152
-
153
- # Offense count: 1
154
- # Configuration parameters: .
155
- # SupportedStyles: annotated, template, unannotated
156
- Style/FormatStringToken:
157
- EnforcedStyle: unannotated
158
-
159
- # Offense count: 3
160
- Style/MethodCalledOnDoEndBlock:
161
- Exclude:
162
- - 'lib/trailblazer/operation/inspect.rb'
163
- - 'test/step_test.rb'
164
-
165
- # Offense count: 2
166
- # Cop supports --auto-correct.
167
- Style/MutableConstant:
168
- Exclude:
169
- - 'lib/trailblazer/operation/inspect.rb'
170
- - 'lib/trailblazer/operation/version.rb'
171
-
172
- # Offense count: 1
173
- # Cop supports --auto-correct.
174
- Style/ParallelAssignment:
175
- Exclude:
176
- - 'lib/trailblazer/operation/result.rb'
177
-
178
- # Offense count: 4
179
- # Cop supports --auto-correct.
180
- # Configuration parameters: PreferredDelimiters.
181
- Style/PercentLiteralDelimiters:
182
- Exclude:
183
- - 'Rakefile'
184
-
185
- # Offense count: 4
186
- # Cop supports --auto-correct.
187
- # Configuration parameters: EnforcedStyle.
188
- # SupportedStyles: only_raise, only_fail, semantic
189
- Style/SignalException:
190
- Exclude:
191
- - 'test/operation_test.rb'
192
- - 'test/ruby-2.0.0/operation_test.rb'
193
-
194
- # Offense count: 1
195
- # Cop supports --auto-correct.
196
- # Configuration parameters: EnforcedStyle.
197
- # SupportedStyles: use_perl_names, use_english_names
198
- Style/SpecialGlobalVars:
199
- Exclude:
200
- - 'trailblazer-operation.gemspec'
201
-
202
- # Offense count: 3
203
- # Cop supports --auto-correct.
204
- # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
205
- # SupportedStyles: single_quotes, double_quotes
206
- Style/StringLiterals:
207
- Exclude:
208
- - 'Gemfile'
209
- - 'trailblazer-operation.gemspec'
210
-
211
- # Offense count: 1
212
- # Cop supports --auto-correct.
213
- # Configuration parameters: EnforcedStyleForMultiline.
214
- # SupportedStylesForMultiline: comma, consistent_comma, no_comma
215
- Style/TrailingCommaInHashLiteral:
216
- Exclude:
217
- - 'lib/trailblazer/operation.rb'
218
-
219
- # Offense count: 2
220
- # Cop supports --auto-correct.
221
- Style/UnneededPercentQ:
222
- Exclude:
223
- - 'trailblazer-operation.gemspec'
@@ -1,42 +0,0 @@
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
@@ -1,23 +0,0 @@
1
- module Trailblazer
2
- module Operation::Railway
3
- # Call the user's steps with a differing API (inspired by Maciej Mensfeld) that
4
- # only receives keyword args. The `options` keyword is the stateful context object
5
- #
6
- # def my_step( params:, ** )
7
- # def my_step( params:, options:, ** )
8
- module Macaroni
9
- def self.call(user_proc)
10
- Activity::TaskBuilder::Task.new(Trailblazer::Option.build(Macaroni::Option, user_proc), user_proc)
11
- end
12
-
13
- class Option < Trailblazer::Option
14
- # The Option#call! method prepares the arguments.
15
- def self.call!(proc, options, *)
16
- proc.(**options.to_hash.merge(options: options))
17
- end
18
- end
19
- end
20
-
21
- KwSignature = Macaroni
22
- end
23
- end