nxt_pipeline 0.2.5 → 0.2.6
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/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +8 -8
- data/README.md +18 -1
- data/lib/nxt_pipeline/error_callback.rb +10 -1
- data/lib/nxt_pipeline/pipeline.rb +12 -2
- data/lib/nxt_pipeline/version.rb +1 -1
- data/nxt_pipeline.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5b6a6aecafbd42348179870b4fb233198d36f57fcaf9bc15a73ec1cf94c7153
|
4
|
+
data.tar.gz: 550eb798e64c2cf093bb991589c5fc3b711e01da213d9079efa690ad5bfd7f07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 854f0e2cdfe534178509d440d5f997c37734a91389c1f994e64054f5a9ffcbe125f90b61eaf4721214ada62f34abed5378fb734538398a2a34d61eb3926aa55d
|
7
|
+
data.tar.gz: c5c1dc5effe486335cffe8fdb766bb756fdb0c55825d89169daea456694fea809ae0938d13500765a09ab364b5aad11c0ce4a6f1b20573db38361f1907a36061
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.6.
|
1
|
+
2.6.3
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nxt_pipeline (0.2.
|
4
|
+
nxt_pipeline (0.2.6)
|
5
5
|
activesupport
|
6
6
|
|
7
7
|
GEM
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
coderay (1.1.2)
|
16
16
|
concurrent-ruby (1.1.5)
|
17
17
|
diff-lcs (1.3)
|
18
|
-
ffi (1.
|
18
|
+
ffi (1.11.1)
|
19
19
|
formatador (0.2.5)
|
20
20
|
guard (2.15.0)
|
21
21
|
formatador (>= 0.2.4)
|
@@ -47,7 +47,7 @@ GEM
|
|
47
47
|
pry (0.12.2)
|
48
48
|
coderay (~> 1.1.0)
|
49
49
|
method_source (~> 0.9.0)
|
50
|
-
rake (
|
50
|
+
rake (12.3.3)
|
51
51
|
rb-fsevent (0.10.3)
|
52
52
|
rb-inotify (0.10.0)
|
53
53
|
ffi (~> 1.0)
|
@@ -55,15 +55,15 @@ GEM
|
|
55
55
|
rspec-core (~> 3.8.0)
|
56
56
|
rspec-expectations (~> 3.8.0)
|
57
57
|
rspec-mocks (~> 3.8.0)
|
58
|
-
rspec-core (3.8.
|
58
|
+
rspec-core (3.8.1)
|
59
59
|
rspec-support (~> 3.8.0)
|
60
|
-
rspec-expectations (3.8.
|
60
|
+
rspec-expectations (3.8.4)
|
61
61
|
diff-lcs (>= 1.2.0, < 2.0)
|
62
62
|
rspec-support (~> 3.8.0)
|
63
|
-
rspec-mocks (3.8.
|
63
|
+
rspec-mocks (3.8.1)
|
64
64
|
diff-lcs (>= 1.2.0, < 2.0)
|
65
65
|
rspec-support (~> 3.8.0)
|
66
|
-
rspec-support (3.8.
|
66
|
+
rspec-support (3.8.2)
|
67
67
|
rspec_junit_formatter (0.4.1)
|
68
68
|
rspec-core (>= 2, < 4, != 2.12.0)
|
69
69
|
ruby_dep (1.5.0)
|
@@ -81,7 +81,7 @@ DEPENDENCIES
|
|
81
81
|
guard-rspec
|
82
82
|
nxt_pipeline!
|
83
83
|
pry
|
84
|
-
rake (~>
|
84
|
+
rake (~> 12.3)
|
85
85
|
rspec (~> 3.0)
|
86
86
|
rspec_junit_formatter
|
87
87
|
|
data/README.md
CHANGED
@@ -109,10 +109,21 @@ end
|
|
109
109
|
```
|
110
110
|
|
111
111
|
You can query the steps of your pipeline simply by calling `pipeline.steps`. A NxtPipeline::Step will provide you with
|
112
|
-
an interface it's type, options, status (:success, :skipped, :failed), result, error and the index in the pipeline.
|
112
|
+
an interface to it's type, options, status (:success, :skipped, :failed), result, error and the index in the pipeline.
|
113
113
|
|
114
114
|
```
|
115
115
|
pipeline.steps.first
|
116
|
+
# will give you something like this:
|
117
|
+
|
118
|
+
#<NxtPipeline::Step:0x00007f83eb399448
|
119
|
+
@constructor=
|
120
|
+
#<Proc:0x00007f83eb399498@/Users/andy/workspace/nxt_pipeline/spec/pipeline_spec.rb:467>,
|
121
|
+
@error=nil,
|
122
|
+
@index=0,
|
123
|
+
@opts={:to_s=>:transformer, :method=>:upcase},
|
124
|
+
@result=nil,
|
125
|
+
@status=nil,
|
126
|
+
@type=:transformer>
|
116
127
|
```
|
117
128
|
|
118
129
|
### Error callbacks
|
@@ -133,6 +144,11 @@ NxtPipeline::Pipeline.new do |p|
|
|
133
144
|
# First matching error callback will be executed!
|
134
145
|
end
|
135
146
|
|
147
|
+
p.on_errors YetAnotherError, halt_on_error: false do |step, arg, error|
|
148
|
+
# After executing the callback the pipeline will not halt but continue to
|
149
|
+
# execute the next steps.
|
150
|
+
end
|
151
|
+
|
136
152
|
p.on_errors do |step, arg, error|
|
137
153
|
# This will match all errors inheriting from StandardError
|
138
154
|
end
|
@@ -147,6 +163,7 @@ You can also define callbacks that run before and after the `#execute` action. B
|
|
147
163
|
NxtPipeline::Pipeline.new do |p|
|
148
164
|
p.before_execute do |pipeline, arg|
|
149
165
|
# Will be called from within #execute before entering the first step
|
166
|
+
# After any configure block though!
|
150
167
|
end
|
151
168
|
|
152
169
|
p.after_execute do |pipeline, arg|
|
@@ -1,12 +1,21 @@
|
|
1
1
|
module NxtPipeline
|
2
2
|
class ErrorCallback
|
3
|
-
def initialize(errors, callback)
|
3
|
+
def initialize(errors, halt_on_error, callback)
|
4
4
|
@errors = errors
|
5
|
+
@halt_on_error = halt_on_error
|
5
6
|
@callback = callback
|
6
7
|
end
|
7
8
|
|
8
9
|
attr_accessor :errors, :callback
|
9
10
|
|
11
|
+
def halt_on_error?
|
12
|
+
@halt_on_error
|
13
|
+
end
|
14
|
+
|
15
|
+
def continue_after_error?
|
16
|
+
!halt_on_error?
|
17
|
+
end
|
18
|
+
|
10
19
|
def applies_to_error?(error)
|
11
20
|
(error.class.ancestors & errors).any?
|
12
21
|
end
|
@@ -72,11 +72,21 @@ module NxtPipeline
|
|
72
72
|
|
73
73
|
result = steps.inject(arg) do |argument, step|
|
74
74
|
execute_step(step, argument)
|
75
|
+
rescue StandardError => error
|
76
|
+
puts step
|
77
|
+
callback = find_error_callback(error)
|
78
|
+
raise unless callback && callback.continue_after_error?
|
79
|
+
handle_step_error(error)
|
80
|
+
argument
|
75
81
|
end
|
76
82
|
|
77
83
|
after_execute_callback.call(self, result) if after_execute_callback.respond_to?(:call)
|
78
84
|
result
|
79
85
|
rescue StandardError => error
|
86
|
+
handle_step_error(error)
|
87
|
+
end
|
88
|
+
|
89
|
+
def handle_step_error(error)
|
80
90
|
log_step(current_step)
|
81
91
|
callback = find_error_callback(error)
|
82
92
|
|
@@ -85,8 +95,8 @@ module NxtPipeline
|
|
85
95
|
callback.call(current_step, current_arg, error)
|
86
96
|
end
|
87
97
|
|
88
|
-
def on_errors(*errors, &callback)
|
89
|
-
error_callbacks << ErrorCallback.new(errors, callback)
|
98
|
+
def on_errors(*errors, halt_on_error: true, &callback)
|
99
|
+
error_callbacks << ErrorCallback.new(errors, halt_on_error, callback)
|
90
100
|
end
|
91
101
|
|
92
102
|
alias :on_error :on_errors
|
data/lib/nxt_pipeline/version.rb
CHANGED
data/nxt_pipeline.gemspec
CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_dependency "activesupport"
|
38
38
|
spec.add_development_dependency "bundler", "~> 1.17"
|
39
39
|
spec.add_development_dependency "guard-rspec"
|
40
|
-
spec.add_development_dependency "rake", "~>
|
40
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
41
41
|
spec.add_development_dependency "rspec", "~> 3.0"
|
42
42
|
spec.add_development_dependency "pry"
|
43
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nxt_pipeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nils Sommer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-07-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -60,14 +60,14 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
63
|
+
version: '12.3'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
70
|
+
version: '12.3'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rspec
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|