trailblazer-activity 0.16.3 → 0.17.0

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: d337611d8f737a90f05b16ad72442808bb373351ff81ae908fde441492fe72f2
4
- data.tar.gz: 705b4f0de152cf24b0be9dead73aa2cde4f59cce80548a4a44737b061be76e3a
3
+ metadata.gz: db90b7ac4eda6d6bf8c55d4e3107c8aac6ebfbf8a29e4e7d7e8a2394f0faab4a
4
+ data.tar.gz: 1b28fade56d479d3c500e571c22247359d767d3e5f427b85f071ab0bd8a642c8
5
5
  SHA512:
6
- metadata.gz: 77173535922167fbc51c4bcc92909dea8e263313d97ef7ce47716ddbadc0a82ece0d511deccb57badc1adecb61fe2276594cf561642931da9cc243c2960fd9b7
7
- data.tar.gz: e2157a80cbfdea6cc573bec8bdbb1933667e17335229aa9690051b3cb34bd0adb4613991621332debde5b34cb00993e9595169d154c8861db8857313deba4d66
6
+ metadata.gz: 5b23e22e9df457794cc04bb571839dbe703677ffcfe1f137f65282fc520e99b3676a8047a0a0b0909e8ec0397ad696443773fea79a0b2f323c767c1f02330347
7
+ data.tar.gz: 5610595f825d407f05c74fddc10a44bf030b71d54d1880ae0f27f1fc753be084806c799b6bd402aa4fd27df5fc411a1fefdc88f64c67eb80262275b66b8c17e9
data/CHANGES.md CHANGED
@@ -1,3 +1,14 @@
1
+ # 0.17.0
2
+
3
+ * In `Extension#call`, remove the dependency to `Implementation::Task`. The logic only receives the actual circuit task.
4
+ * Remove deprecated `Extension()` interface.
5
+ * Remove `Trailblazer::Activity::Introspect::Graph`.
6
+
7
+ # 0.16.4
8
+
9
+ * Revert the static "fix" from 0.16.3 and make the compaction fix optional, as most Ruby versions
10
+ are solving this problem natively. See here for details: https://dev.to/trailblazer/gc-compaction-behold-your-hash-keys-2ii1#quick-fix
11
+
1
12
  # 0.16.3
2
13
 
3
14
  * Fix a bug in Ruby 3.2: `NoMethodError: undefined method `[]' for nil`. Thanks @tiagotex for finding the problem
data/Gemfile CHANGED
@@ -3,3 +3,5 @@ gemspec
3
3
 
4
4
  # gem "trailblazer-developer", path: "../trailblazer-developer"
5
5
  # gem "benchmark-ips"
6
+ # gem "trailblazer-core-utils", path: "../trailblazer-core-utils"
7
+ # gem "trailblazer-core-utils", github: "trailblazer/trailblazer-core-utils"
@@ -0,0 +1,28 @@
1
+ module Trailblazer
2
+ class Activity
3
+ # TODO: we can remove this once we drop Ruby <= 3.3.6.
4
+ class Circuit
5
+ # This is a hot fix for Ruby versions that haven't fixed the GC compaction bug:
6
+ # https://redmine.ruby-lang.org/issues/20853
7
+ # https://bugs.ruby-lang.org/issues/20868
8
+ #
9
+ # Affected versions might be: 3.1.x, 3.2.?????????, 3.3.0-3.3.6
10
+ # You don't need this fix in the following versions:
11
+ #
12
+ # If you experience this bug: https://github.com/trailblazer/trailblazer-activity/issues/60
13
+ #
14
+ # NoMethodError: undefined method `[]' for nil
15
+ #
16
+ # you need to do
17
+ #
18
+ # Trailblazer::Activity::Circuit.include(RubyWithUnfixedCompaction)
19
+ module RubyWithUnfixedCompaction
20
+ def initialize(wiring, *args, **options)
21
+ wiring.compare_by_identity
22
+
23
+ super(wiring, *args, **options)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -56,13 +56,6 @@ module Trailblazer
56
56
 
57
57
  proc.inspect
58
58
  end
59
-
60
- # TODO: remove with 0.1.0.
61
- def self.Graph(*args)
62
- Deprecate.warn caller_locations[0], %(`Trailblazer::Activity::Introspect::Graph` is deprecated. Please use `Trailblazer::Developer::Introspect.Graph`)
63
-
64
- Trailblazer::Developer::Introspect::Graph.new(*args)
65
- end
66
59
  end # Introspect
67
60
  end
68
61
  end
@@ -24,7 +24,7 @@ module Trailblazer
24
24
 
25
25
  # From the intermediate "template" and the actual implementation, compile a {Circuit} instance.
26
26
  def schema_components(intermediate, implementation, config)
27
- wiring = {}.compare_by_identity # https://ruby-doc.org/3.3.0/Hash.html#class-Hash-label-Modifying+an+Active+Hash+Key
27
+ wiring = {}
28
28
  nodes_attributes = []
29
29
 
30
30
  intermediate.wiring.each do |task_ref, outs|
@@ -92,7 +92,7 @@ module Trailblazer
92
92
  def invoke_extensions_for(config, impl_task, id)
93
93
  impl_task
94
94
  .extensions
95
- .inject(config) { |cfg, ext| ext.(config: cfg, id: id, task: impl_task) } # {ext} must return new config hash.
95
+ .inject(config) { |cfg, ext| ext.(config: cfg, id: id, task: impl_task.circuit_task) } # {ext} must return new config hash.
96
96
  end
97
97
 
98
98
  # In an array of {Activity::Output}, find the output matching {semantic}.
@@ -17,15 +17,7 @@ module Trailblazer
17
17
  # TaskWrap.Extension([task, id: "my_logger", append: "task_wrap.call_task"], [...])
18
18
  #
19
19
  # If you want a {wrap_static} extension, wrap it using `Extension.WrapStatic.new`.
20
- def self.Extension(*inserts, merge: nil)
21
- if merge
22
- Deprecate.warn caller_locations[0], "The :merge option for TaskWrap.Extension is deprecated and will be removed in 0.16.
23
- Please refer to https://trailblazer.to/2.1/docs/activity.html#activity-taskwrap-static and have a great day."
24
-
25
- return Extension::WrapStatic.new(extension: Extension.new(*merge))
26
- # TODO: remove me once we drop the pre-friendly interface.
27
- end
28
-
20
+ def self.Extension(*inserts)
29
21
  Extension.build(*inserts)
30
22
  end
31
23
 
@@ -44,8 +36,6 @@ Please refer to https://trailblazer.to/2.1/docs/activity.html#activity-taskwrap-
44
36
  end
45
37
 
46
38
  def initialize(*extension_rows)
47
- extension_rows = deprecated_extension_for(extension_rows) # TODO: remove me soon!
48
-
49
39
  @extension_rows = extension_rows # those rows are simple ADDS instructions.
50
40
  end
51
41
 
@@ -55,21 +45,6 @@ Please refer to https://trailblazer.to/2.1/docs/activity.html#activity-taskwrap-
55
45
  Adds.apply_adds(task_wrap_pipeline, @extension_rows)
56
46
  end
57
47
 
58
- # TODO: remove me once we drop the pre-friendly interface.
59
- def deprecated_extension_for(extension_rows)
60
- return extension_rows unless extension_rows.find { |ext| ext.is_a?(Array) }
61
-
62
- Deprecate.warn caller_locations[3], "You are using the old API for taskWrap extensions.
63
- Please update to the new TaskWrap.Extension() API."
64
-
65
- extension_rows.collect do |ary|
66
- {
67
- insert: ary[0..1],
68
- row: Pipeline.Row(*ary[2])
69
- }
70
- end
71
- end
72
-
73
48
  # Create extensions from the friendly interface that can alter the wrap_static
74
49
  # of a step in an activity. The returned extensionn can be passed directly via {:extensions}
75
50
  # to the compiler, or when using the `#step` DSL.
@@ -86,9 +61,6 @@ Please update to the new TaskWrap.Extension() API."
86
61
  end
87
62
 
88
63
  def call(config:, task:, **)
89
- # DISCUSS: does it make sense to test the immutable behavior here? What would be the worst outcome?
90
- task = task.circuit_task # Receives {Schema::Implementation::Task}. DISCUSS: why?
91
-
92
64
  # Add the extension's task(s) to the activity's {:wrap_static} taskWrap
93
65
  # which is stored in the {:config} field.
94
66
  wrap_static = config[:wrap_static] # the activity's {wrap_static}.
@@ -97,6 +69,7 @@ Please update to the new TaskWrap.Extension() API."
97
69
  # Overwrite the original task_wrap:
98
70
  wrap_static = wrap_static.merge(task => @extension.(task_wrap))
99
71
 
72
+ # DISCUSS: does it make sense to test the immutable behavior here? What would be the worst outcome?
100
73
  config.merge(wrap_static: wrap_static) # Return new config hash. This needs to be immutable code!
101
74
  end
102
75
  end # WrapStatic
@@ -23,21 +23,6 @@ class Trailblazer::Activity
23
23
  @sequence
24
24
  end
25
25
 
26
- # TODO: remove me when old tW extension API is deprecated.
27
- def self.method(name)
28
- new_name = {
29
- insert_before: :Prepend,
30
- insert_after: :Append,
31
- append: :Append,
32
- prepend: :Prepend
33
- }.fetch(name)
34
-
35
- warn "[Trailblazer] Using `Trailblazer::Activity::TaskWrap::Pipeline.method(:#{name})` is deprecated.
36
- Please use the new API: #FIXME!!!"
37
-
38
- Trailblazer::Activity::Adds::Insert.method(new_name)
39
- end
40
-
41
26
  def self.Row(id, task)
42
27
  Row[id, task]
43
28
  end
@@ -48,18 +33,6 @@ Please use the new API: #FIXME!!!"
48
33
  end
49
34
  end
50
35
 
51
- # TODO: remove {Merge} when old tW extension API is deprecated.
52
- class Merge
53
- def self.new(*inserts)
54
- warn "[Trailblazer] Using `Trailblazer::Activity::TaskWrap::Pipeline::Merge.new` is deprecated.
55
- Please use the new TaskWrap.Extension() API: #FIXME!!!"
56
-
57
- # We can safely assume that users calling {Merge.new} are using the old tW extension API, not
58
- # the "friendly API". That's why we don't go through {Extension.build}.
59
- TaskWrap::Extension.new(*inserts)
60
- end
61
- end # Merge
62
-
63
36
  # Implements adapter for a callable in a Pipeline.
64
37
  class TaskAdapter < Circuit::TaskAdapter
65
38
  # Returns a {Pipeline::TaskAdapter} instance that can be used directly in a Pipeline.
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Version
3
3
  module Activity
4
- VERSION = "0.16.3"
4
+ VERSION = "0.17.0"
5
5
  end
6
6
  end
7
7
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ["apotonick@gmail.com"]
10
10
 
11
11
  spec.summary = %q{Runtime code for Trailblazer activities.}
12
- spec.homepage = "http://trailblazer.to"
12
+ spec.homepage = "https://trailblazer.to"
13
13
  spec.licenses = ["LGPL-3.0"]
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "minitest", "~> 5.0"
25
25
  spec.add_development_dependency "minitest-line"
26
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "trailblazer-core-utils", "0.0.4"
27
28
 
28
29
  spec.required_ruby_version = '>= 2.1.0'
29
30
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-activity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.3
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-10-08 00:00:00.000000000 Z
10
+ date: 2024-11-13 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: trailblazer-context
@@ -94,7 +93,20 @@ dependencies:
94
93
  - - ">="
95
94
  - !ruby/object:Gem::Version
96
95
  version: '0'
97
- description:
96
+ - !ruby/object:Gem::Dependency
97
+ name: trailblazer-core-utils
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 0.0.4
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 0.0.4
98
110
  email:
99
111
  - apotonick@gmail.com
100
112
  executables: []
@@ -114,6 +126,7 @@ files:
114
126
  - lib/trailblazer/activity.rb
115
127
  - lib/trailblazer/activity/adds.rb
116
128
  - lib/trailblazer/activity/circuit.rb
129
+ - lib/trailblazer/activity/circuit/ruby_with_unfixed_compaction.rb
117
130
  - lib/trailblazer/activity/circuit/task_adapter.rb
118
131
  - lib/trailblazer/activity/deprecate.rb
119
132
  - lib/trailblazer/activity/introspect.rb
@@ -131,11 +144,10 @@ files:
131
144
  - lib/trailblazer/activity/testing.rb
132
145
  - lib/trailblazer/activity/version.rb
133
146
  - trailblazer-activity.gemspec
134
- homepage: http://trailblazer.to
147
+ homepage: https://trailblazer.to
135
148
  licenses:
136
149
  - LGPL-3.0
137
150
  metadata: {}
138
- post_install_message:
139
151
  rdoc_options: []
140
152
  require_paths:
141
153
  - lib
@@ -150,8 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
162
  - !ruby/object:Gem::Version
151
163
  version: '0'
152
164
  requirements: []
153
- rubygems_version: 3.2.3
154
- signing_key:
165
+ rubygems_version: 3.6.0.dev
155
166
  specification_version: 4
156
167
  summary: Runtime code for Trailblazer activities.
157
168
  test_files: []