trailblazer-activity 0.10.1 → 0.11.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 +4 -4
- data/.travis.yml +10 -8
- data/CHANGES.md +4 -0
- data/Gemfile +0 -3
- data/LICENSE +1 -1
- data/Rakefile +2 -5
- data/lib/trailblazer/activity.rb +3 -12
- data/lib/trailblazer/activity/config.rb +1 -0
- data/lib/trailblazer/activity/introspect.rb +11 -10
- data/lib/trailblazer/activity/schema.rb +2 -0
- data/lib/trailblazer/activity/schema/intermediate.rb +3 -3
- data/lib/trailblazer/activity/structures.rb +11 -12
- data/lib/trailblazer/activity/task_builder.rb +5 -1
- data/lib/trailblazer/activity/task_wrap.rb +14 -8
- data/lib/trailblazer/activity/task_wrap/inject.rb +1 -1
- data/lib/trailblazer/activity/task_wrap/pipeline.rb +1 -1
- data/lib/trailblazer/activity/task_wrap/runner.rb +3 -4
- data/lib/trailblazer/activity/testing.rb +3 -3
- data/lib/trailblazer/activity/version.rb +1 -1
- data/trailblazer-activity.gemspec +2 -2
- metadata +8 -10
- data/.rubocop-https---raw-githubusercontent-com-trailblazer-meta-master-rubocop-yml +0 -101
- data/.rubocop.yml +0 -7
- data/.rubocop_todo.yml +0 -900
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e3223f3eba8cc3fecb792e693dbba7da7f2941a3703b953ccc61c5044916ae5f
|
|
4
|
+
data.tar.gz: e449258dd404bfeb40516f00b44548fdae0cb59af9b7fc4695c02c649fa71bf8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3bc812315aeff872392b12b9c7094ad851c0192f3cf340d822d4c460309574737aaabb93eb192b1e130075b711cf2b548942fe7a2cad5a1ef860b4d31b78dbde
|
|
7
|
+
data.tar.gz: 88361f9bc83de278ea1e144276d8167c9b04f82605209ef240877e33900dc8c9480954c092a55fc1e57f516a03bbb81b8499c4488701e95b54f64343a684fc55
|
data/.travis.yml
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
sudo: false
|
|
2
1
|
language: ruby
|
|
3
|
-
rvm:
|
|
4
|
-
- 2.6.0
|
|
5
|
-
- 2.5.1
|
|
6
|
-
- 2.4.4
|
|
7
|
-
# - 2.3.7
|
|
8
|
-
# - 2.2.10
|
|
9
|
-
# - 2.1.10
|
|
10
2
|
before_install: gem install bundler
|
|
3
|
+
cache: bundler
|
|
4
|
+
rvm:
|
|
5
|
+
- ruby-head
|
|
6
|
+
- 2.7
|
|
7
|
+
- 2.6
|
|
8
|
+
- 2.5
|
|
9
|
+
- 2.4
|
|
10
|
+
jobs:
|
|
11
|
+
allow_failures:
|
|
12
|
+
- rvm: ruby-head
|
data/CHANGES.md
CHANGED
data/Gemfile
CHANGED
|
@@ -6,8 +6,5 @@ gemspec
|
|
|
6
6
|
gem "benchmark-ips"
|
|
7
7
|
gem "minitest-line"
|
|
8
8
|
|
|
9
|
-
gem "rubocop", require: false
|
|
10
|
-
|
|
11
9
|
# gem "trailblazer-context", path: "../trailblazer-context"
|
|
12
10
|
# gem "trailblazer-developer", path: "../trailblazer-developer"
|
|
13
|
-
# gem "trailblazer-developer", github: "trailblazer/trailblazer-developer", branch: "exception-tracing"
|
data/LICENSE
CHANGED
data/Rakefile
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
require "bundler/gem_tasks"
|
|
2
2
|
require "rake/testtask"
|
|
3
|
-
require "rubocop/rake_task"
|
|
4
3
|
|
|
5
4
|
Rake::TestTask.new(:test) do |t|
|
|
6
5
|
t.libs << "test"
|
|
7
6
|
t.libs << "lib"
|
|
8
|
-
t.test_files = FileList["
|
|
7
|
+
t.test_files = FileList["test/**/*_test.rb"] - FileList["test/docs/*"] + ["test/docs/activity_test.rb"]
|
|
9
8
|
end
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
task :default => :test
|
|
10
|
+
task default: %i[test]
|
data/lib/trailblazer/activity.rb
CHANGED
|
@@ -7,10 +7,10 @@ module Trailblazer
|
|
|
7
7
|
@schema = schema
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def call(args, circuit_options
|
|
10
|
+
def call(args, **circuit_options)
|
|
11
11
|
@schema[:circuit].(
|
|
12
12
|
args,
|
|
13
|
-
circuit_options.merge(activity: self)
|
|
13
|
+
**circuit_options.merge(activity: self)
|
|
14
14
|
)
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -34,24 +34,15 @@ module Trailblazer
|
|
|
34
34
|
end # Activity
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
# require "trailblazer/activity/interface"
|
|
38
37
|
require "trailblazer/activity/structures"
|
|
39
38
|
require "trailblazer/activity/schema"
|
|
40
|
-
require "trailblazer/activity/schema/implementation"
|
|
41
|
-
require "trailblazer/activity/schema/intermediate"
|
|
42
39
|
require "trailblazer/activity/circuit"
|
|
43
40
|
require "trailblazer/activity/config"
|
|
44
41
|
require "trailblazer/activity/introspect"
|
|
45
|
-
|
|
46
42
|
require "trailblazer/activity/task_wrap"
|
|
47
|
-
require "trailblazer/activity/
|
|
48
|
-
require "trailblazer/activity/task_wrap/call_task"
|
|
49
|
-
require "trailblazer/activity/task_wrap/runner"
|
|
50
|
-
require "trailblazer/activity/task_wrap/variable_mapping"
|
|
51
|
-
require "trailblazer/activity/task_wrap/inject"
|
|
43
|
+
require "trailblazer/activity/task_builder"
|
|
52
44
|
|
|
53
45
|
require "trailblazer/option"
|
|
54
46
|
require "trailblazer/context"
|
|
55
|
-
require "trailblazer/activity/task_builder"
|
|
56
47
|
|
|
57
48
|
|
|
@@ -4,10 +4,6 @@ module Trailblazer
|
|
|
4
4
|
# It abstracts internals about circuits and provides a convenient API to third-parties such as
|
|
5
5
|
# tracing, rendering an activity, or finding particular tasks.
|
|
6
6
|
module Introspect
|
|
7
|
-
def self.Graph(*args)
|
|
8
|
-
Graph.new(*args)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
# TODO: order of step/fail/pass in Node would be cool to have
|
|
12
8
|
|
|
13
9
|
# @private This API is still under construction.
|
|
@@ -20,13 +16,14 @@ module Trailblazer
|
|
|
20
16
|
@configs = @schema[:nodes]
|
|
21
17
|
end
|
|
22
18
|
|
|
23
|
-
def find(id=nil, &block)
|
|
19
|
+
def find(id = nil, &block)
|
|
24
20
|
return find_by_id(id) unless block_given?
|
|
21
|
+
|
|
25
22
|
find_with_block(&block)
|
|
26
23
|
end
|
|
27
24
|
|
|
28
|
-
def collect(strategy: :circuit
|
|
29
|
-
@map.keys.each_with_index.collect { |task, i| yield find_with_block { |node| node.task==task }, i }
|
|
25
|
+
def collect(strategy: :circuit)
|
|
26
|
+
@map.keys.each_with_index.collect { |task, i| yield find_with_block { |node| node.task == task }, i }
|
|
30
27
|
end
|
|
31
28
|
|
|
32
29
|
def stop_events
|
|
@@ -36,11 +33,11 @@ module Trailblazer
|
|
|
36
33
|
private
|
|
37
34
|
|
|
38
35
|
def find_by_id(id)
|
|
39
|
-
node = @configs.find { |
|
|
36
|
+
node = @configs.find { |_node| _node.id == id } or return
|
|
40
37
|
node_for(node)
|
|
41
38
|
end
|
|
42
39
|
|
|
43
|
-
def find_with_block
|
|
40
|
+
def find_with_block
|
|
44
41
|
existing = @configs.find { |node| yield Node(node.task, node.id, node.outputs, node.data) } or return
|
|
45
42
|
|
|
46
43
|
node_for(existing)
|
|
@@ -67,6 +64,10 @@ module Trailblazer
|
|
|
67
64
|
end
|
|
68
65
|
end
|
|
69
66
|
end
|
|
70
|
-
|
|
67
|
+
|
|
68
|
+
def self.Graph(*args)
|
|
69
|
+
Graph.new(*args)
|
|
70
|
+
end
|
|
71
|
+
end # Introspect
|
|
71
72
|
end
|
|
72
73
|
end
|
|
@@ -20,7 +20,7 @@ class Trailblazer::Activity
|
|
|
20
20
|
nodes = node_attributes(intermediate, implementation)
|
|
21
21
|
outputs = outputs(intermediate.stop_task_ids, nodes)
|
|
22
22
|
config = config(implementation, config: config_default)
|
|
23
|
-
|
|
23
|
+
Schema.new(circuit, outputs, nodes, config)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# From the intermediate "template" and the actual implementation, compile a {Circuit} instance.
|
|
@@ -83,10 +83,10 @@ class Trailblazer::Activity
|
|
|
83
83
|
config
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
|
|
88
88
|
# Apply to any array.
|
|
89
|
-
def self.for_semantic(outputs, semantic)
|
|
89
|
+
private_class_method def self.for_semantic(outputs, semantic)
|
|
90
90
|
outputs.find { |out| out.semantic == semantic } or raise "`#{semantic}` not found"
|
|
91
91
|
end
|
|
92
92
|
end # Intermediate
|
|
@@ -2,13 +2,7 @@ module Trailblazer
|
|
|
2
2
|
class Activity
|
|
3
3
|
# Generic run-time structures that are built via the DSL.
|
|
4
4
|
|
|
5
|
-
# Builds an {Activity::End} instance.
|
|
6
|
-
def self.End(semantic)
|
|
7
|
-
End.new(semantic: semantic)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
5
|
# Any instance of subclass of End will halt the circuit's execution when hit.
|
|
11
|
-
|
|
12
6
|
# An End event is a simple structure typically found as the last task invoked
|
|
13
7
|
# in an activity. The special behavior is that it
|
|
14
8
|
# a) maintains a semantic that is used to further connect that very event
|
|
@@ -18,8 +12,8 @@ module Trailblazer
|
|
|
18
12
|
@options = options.merge(semantic: semantic)
|
|
19
13
|
end
|
|
20
14
|
|
|
21
|
-
def call(args, circuit_options)
|
|
22
|
-
return self, args, circuit_options
|
|
15
|
+
def call(args, **circuit_options)
|
|
16
|
+
return self, args, **circuit_options
|
|
23
17
|
end
|
|
24
18
|
|
|
25
19
|
def to_h
|
|
@@ -27,15 +21,15 @@ module Trailblazer
|
|
|
27
21
|
end
|
|
28
22
|
|
|
29
23
|
def to_s
|
|
30
|
-
%{#<#{self.class.name} #{@options.collect{ |k,v| "#{k}=#{v.inspect}" }.join(" ")}>}
|
|
24
|
+
%{#<#{self.class.name} #{@options.collect { |k, v| "#{k}=#{v.inspect}" }.join(" ")}>}
|
|
31
25
|
end
|
|
32
26
|
|
|
33
|
-
|
|
27
|
+
alias inspect to_s
|
|
34
28
|
end
|
|
35
29
|
|
|
36
30
|
class Start < End
|
|
37
|
-
def call(args, circuit_options)
|
|
38
|
-
return Activity::Right, args, circuit_options
|
|
31
|
+
def call(args, **circuit_options)
|
|
32
|
+
return Activity::Right, args, **circuit_options
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
|
|
@@ -53,5 +47,10 @@ module Trailblazer
|
|
|
53
47
|
def self.Output(signal, semantic)
|
|
54
48
|
Output.new(signal, semantic).freeze
|
|
55
49
|
end
|
|
50
|
+
|
|
51
|
+
# Builds an {Activity::End} instance.
|
|
52
|
+
def self.End(semantic)
|
|
53
|
+
End.new(semantic: semantic)
|
|
54
|
+
end
|
|
56
55
|
end
|
|
57
56
|
end
|
|
@@ -11,7 +11,11 @@ module Trailblazer
|
|
|
11
11
|
# Translates the return value of the user step into a valid signal.
|
|
12
12
|
# Note that it passes through subclasses of {Signal}.
|
|
13
13
|
def self.binary_signal_for(result, on_true, on_false)
|
|
14
|
-
result.is_a?(Class) && result < Activity::Signal
|
|
14
|
+
if result.is_a?(Class) && result < Activity::Signal
|
|
15
|
+
result
|
|
16
|
+
else
|
|
17
|
+
result ? on_true : on_false
|
|
18
|
+
end
|
|
15
19
|
end
|
|
16
20
|
|
|
17
21
|
class Task
|
|
@@ -3,12 +3,12 @@ module Trailblazer
|
|
|
3
3
|
#
|
|
4
4
|
# Example with tracing:
|
|
5
5
|
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
# Call the task_wrap circuit:
|
|
7
|
+
# |-- Start
|
|
8
|
+
# |-- Trace.capture_args [optional]
|
|
9
|
+
# |-- Call (call actual task) id: "task_wrap.call_task"
|
|
10
|
+
# |-- Trace.capture_return [optional]
|
|
11
|
+
# |-- Wrap::End
|
|
12
12
|
module TaskWrap
|
|
13
13
|
module_function
|
|
14
14
|
|
|
@@ -21,7 +21,7 @@ module Trailblazer
|
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
# signal, (ctx, flow), circuit_options =
|
|
24
|
-
Runner.(activity, args, circuit_options)
|
|
24
|
+
Runner.(activity, args, **circuit_options)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# {:extension} API
|
|
@@ -29,7 +29,8 @@ module Trailblazer
|
|
|
29
29
|
# Gets executed in {Intermediate.call} which also provides {config}.
|
|
30
30
|
|
|
31
31
|
def initial_wrap_static(*)
|
|
32
|
-
|
|
32
|
+
# return initial_sequence
|
|
33
|
+
TaskWrap::Pipeline.new([["task_wrap.call_task", TaskWrap.method(:call_task)]])
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
# Use this in your macros if you want to extend the {taskWrap}.
|
|
@@ -51,3 +52,8 @@ module Trailblazer
|
|
|
51
52
|
end # TaskWrap
|
|
52
53
|
end
|
|
53
54
|
end
|
|
55
|
+
require "trailblazer/activity/task_wrap/pipeline"
|
|
56
|
+
require "trailblazer/activity/task_wrap/call_task"
|
|
57
|
+
require "trailblazer/activity/task_wrap/runner"
|
|
58
|
+
require "trailblazer/activity/task_wrap/variable_mapping"
|
|
59
|
+
require "trailblazer/activity/task_wrap/inject"
|
|
@@ -16,7 +16,7 @@ class Trailblazer::Activity
|
|
|
16
16
|
Trailblazer::Context.for_circuit(ctx, {}, [original_ctx, flow_options], circuit_options) # TODO: test if Inject and :context_class work.
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
output = ->(new_ctx, (original_ctx,
|
|
19
|
+
output = ->(new_ctx, (original_ctx, _flow_options), _circuit_options) { # FIXME: use Unscope
|
|
20
20
|
_, mutable_data = new_ctx.decompose
|
|
21
21
|
|
|
22
22
|
# we are only interested in the {mutable_data} part since the disposed part
|
|
@@ -9,7 +9,7 @@ class Trailblazer::Activity
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def call(wrap_ctx, original_args)
|
|
12
|
-
@sequence.each { |(
|
|
12
|
+
@sequence.each { |(_id, task)| wrap_ctx, original_args = task.(wrap_ctx, original_args) }
|
|
13
13
|
|
|
14
14
|
return wrap_ctx, original_args
|
|
15
15
|
end
|
|
@@ -13,7 +13,7 @@ class Trailblazer::Activity
|
|
|
13
13
|
wrap_ctx = { task: task }
|
|
14
14
|
|
|
15
15
|
# this pipeline is "wrapped around" the actual `task`.
|
|
16
|
-
task_wrap_pipeline = merge_static_with_runtime(task, circuit_options) || raise
|
|
16
|
+
task_wrap_pipeline = merge_static_with_runtime(task, **circuit_options) || raise
|
|
17
17
|
|
|
18
18
|
# We save all original args passed into this Runner.call, because we want to return them later after this wrap
|
|
19
19
|
# is finished.
|
|
@@ -28,15 +28,14 @@ class Trailblazer::Activity
|
|
|
28
28
|
return wrap_ctx[:return_signal], wrap_ctx[:return_args]
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
private
|
|
32
31
|
|
|
33
32
|
# Compute the task's wrap by applying alterations both static and from runtime.
|
|
34
33
|
#
|
|
35
34
|
# NOTE: this is for performance reasons: we could have only one hash containing everything but that'd mean
|
|
36
35
|
# unnecessary computations at `call`-time since steps might not even be executed.
|
|
37
36
|
# TODO: make this faster.
|
|
38
|
-
def self.merge_static_with_runtime(task, wrap_runtime:, **circuit_options)
|
|
39
|
-
static_wrap = TaskWrap.wrap_static_for(task, circuit_options) # find static wrap for this specific task [, or default wrap activity].
|
|
37
|
+
private_class_method def self.merge_static_with_runtime(task, wrap_runtime:, **circuit_options)
|
|
38
|
+
static_wrap = TaskWrap.wrap_static_for(task, **circuit_options) # find static wrap for this specific task [, or default wrap activity].
|
|
40
39
|
|
|
41
40
|
# Apply runtime alterations.
|
|
42
41
|
# Grab the additional wirings for the particular `task` from `wrap_runtime`.
|
|
@@ -61,7 +61,7 @@ module Trailblazer
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def Cct(activity)
|
|
64
|
-
|
|
64
|
+
Trailblazer::Developer::Render::Circuit.(activity)
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
# TODO: Remove this once all it's references are removed
|
|
@@ -132,7 +132,7 @@ module Trailblazer
|
|
|
132
132
|
|
|
133
133
|
inspects = semantics.collect { |semantic| %{#<struct Trailblazer::Activity::Output signal=#<Trailblazer::Activity::End semantic=#{semantic.inspect}>, semantic=#{semantic.inspect}>} }
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
assert_equal %{[#{inspects.join(", ")}]}, process.to_h[:outputs].inspect
|
|
136
136
|
|
|
137
137
|
assert_circuit(process, circuit)
|
|
138
138
|
|
|
@@ -142,7 +142,7 @@ module Trailblazer
|
|
|
142
142
|
def assert_circuit(schema, circuit)
|
|
143
143
|
cct = Cct(schema)
|
|
144
144
|
cct = cct.gsub("#<Trailblazer::Activity::TaskBuilder::Task user_proc=", "<*")
|
|
145
|
-
|
|
145
|
+
assert_equal %{#{circuit}}, cct
|
|
146
146
|
end
|
|
147
147
|
end
|
|
148
148
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
lib = File.expand_path(
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
require 'trailblazer/activity/version'
|
|
4
4
|
|
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
end
|
|
18
18
|
spec.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
-
spec.add_dependency "trailblazer-context", ">= 0.
|
|
20
|
+
spec.add_dependency "trailblazer-context", ">= 0.3.0", "< 0.4.0"
|
|
21
21
|
|
|
22
22
|
spec.add_development_dependency "bundler"
|
|
23
23
|
spec.add_development_dependency "minitest", "~> 5.0"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: trailblazer-activity
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.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: 2020-04
|
|
11
|
+
date: 2020-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: trailblazer-context
|
|
@@ -16,20 +16,20 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 0.3.0
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 0.
|
|
22
|
+
version: 0.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: 0.
|
|
29
|
+
version: 0.3.0
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
32
|
+
version: 0.4.0
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: bundler
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,9 +94,6 @@ extensions: []
|
|
|
94
94
|
extra_rdoc_files: []
|
|
95
95
|
files:
|
|
96
96
|
- ".gitignore"
|
|
97
|
-
- ".rubocop-https---raw-githubusercontent-com-trailblazer-meta-master-rubocop-yml"
|
|
98
|
-
- ".rubocop.yml"
|
|
99
|
-
- ".rubocop_todo.yml"
|
|
100
97
|
- ".travis.yml"
|
|
101
98
|
- CHANGES.md
|
|
102
99
|
- Gemfile
|
|
@@ -142,7 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
142
139
|
- !ruby/object:Gem::Version
|
|
143
140
|
version: '0'
|
|
144
141
|
requirements: []
|
|
145
|
-
|
|
142
|
+
rubyforge_project:
|
|
143
|
+
rubygems_version: 2.7.3
|
|
146
144
|
signing_key:
|
|
147
145
|
specification_version: 4
|
|
148
146
|
summary: Runtime code for Trailblazer activities.
|