simplews 1.8.3 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rake_pipeline.rb +47 -33
- data/lib/simplews/jobs.rb +2 -1
- data/lib/simplews/rake.rb +4 -2
- metadata +2 -2
data/lib/rake_pipeline.rb
CHANGED
@@ -118,56 +118,65 @@ module Rake::Pipeline
|
|
118
118
|
Rake::Pipeline::Step.step_descriptions
|
119
119
|
end
|
120
120
|
|
121
|
-
|
122
121
|
def step_dependencies(*args)
|
123
122
|
Rake::Pipeline::Step.step_dependencies(*args)
|
124
123
|
end
|
125
124
|
|
126
|
-
def
|
127
|
-
|
125
|
+
def step_dir(step = nil, filename = nil)
|
126
|
+
filename ||= @@current_task.name
|
127
|
+
info = Rake::Pipeline::Step.parse_filename(filename)
|
128
|
+
"%s/%s" % [info[:prefix], step || info[:step]]
|
129
|
+
end
|
130
|
+
|
131
|
+
def input_filename(task = nil, step = nil)
|
132
|
+
task ||= @@current_task
|
133
|
+
if step.nil?
|
134
|
+
task.prerequisites.first
|
135
|
+
else
|
136
|
+
File.join(step_dir(step, task.name), job_name)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def output_filename(task = nil)
|
141
|
+
task ||= @@current_task
|
142
|
+
task.name
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
def infile(task, step = nil, &block)
|
147
|
+
filename = input_filename(task, step)
|
148
|
+
File.open(filename) do |f|
|
128
149
|
block.call(f)
|
129
150
|
end
|
130
151
|
end
|
131
152
|
|
132
|
-
def outfile(
|
133
|
-
|
153
|
+
def outfile(task, &block)
|
154
|
+
filename = output_filename(task)
|
155
|
+
File.open(filename, 'w') do |f|
|
134
156
|
block.call(f)
|
135
157
|
end
|
136
158
|
end
|
137
159
|
|
138
|
-
def load_input(
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
else
|
146
|
-
f.read
|
147
|
-
end
|
148
|
-
}
|
149
|
-
else
|
150
|
-
return nil if t.prerequisites.first.nil?
|
151
|
-
infile(t){|f|
|
152
|
-
if is_binary?(f)
|
153
|
-
Marshal.load(f)
|
154
|
-
else
|
155
|
-
f.read
|
156
|
-
end
|
157
|
-
}
|
160
|
+
def load_input(task, step = nil)
|
161
|
+
infile(task, step) do |f|
|
162
|
+
if is_binary?(f)
|
163
|
+
Marshal.load(f)
|
164
|
+
else
|
165
|
+
f.read
|
166
|
+
end
|
158
167
|
end
|
159
168
|
end
|
169
|
+
|
160
170
|
|
161
|
-
def save_output(
|
171
|
+
def save_output(task, output)
|
162
172
|
case
|
163
173
|
when output.nil?
|
164
174
|
nil
|
165
175
|
when String === output
|
166
|
-
outfile(
|
176
|
+
outfile(task){|f| f.write output }
|
167
177
|
else
|
168
|
-
outfile(
|
178
|
+
outfile(task){|f| f.write Marshal.dump(output) }
|
169
179
|
end
|
170
|
-
|
171
180
|
end
|
172
181
|
|
173
182
|
# We cannot load the input variable before the block.call, so we need another method
|
@@ -179,7 +188,11 @@ module Rake::Pipeline
|
|
179
188
|
|
180
189
|
if defined? SimpleWS::Jobs
|
181
190
|
def method_missing(symbol, *args)
|
182
|
-
$_current_job.
|
191
|
+
if $_current_job.methods.include? symbol.to_s
|
192
|
+
$_current_job.send(symbol, *args)
|
193
|
+
else
|
194
|
+
raise "Method #{ symbol } not found"
|
195
|
+
end
|
183
196
|
end
|
184
197
|
else
|
185
198
|
# Announce steps
|
@@ -194,11 +207,12 @@ module Rake::Pipeline
|
|
194
207
|
Rake::Pipeline::Info.save_info(@@current_task, info)
|
195
208
|
info
|
196
209
|
end
|
210
|
+
|
211
|
+
def job_name
|
212
|
+
File.basename(@@current_task.name)
|
213
|
+
end
|
197
214
|
end
|
198
215
|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
216
|
# Define a new step, it depends on the previously defined by default. It
|
203
217
|
# saves the output of the block so it can be loaded by the input method of
|
204
218
|
# the next step
|
data/lib/simplews/jobs.rb
CHANGED
data/lib/simplews/rake.rb
CHANGED
@@ -18,7 +18,7 @@ class SimpleWS::Jobs::Scheduler::Job
|
|
18
18
|
# 'execute' method of the Rake::Tasks class method execute is monkey-patched
|
19
19
|
# to log the steps. Since this is executed on a new process, there should be
|
20
20
|
# no side-effects from the patching.
|
21
|
-
def rake(rakefile = "Rakefile")
|
21
|
+
def rake(rakefile = "Rakefile", target = nil)
|
22
22
|
Rake::Task.class_eval <<-'EOC'
|
23
23
|
alias_method :old_execute, :execute
|
24
24
|
def execute(*args)
|
@@ -60,10 +60,12 @@ class SimpleWS::Jobs::Scheduler::Job
|
|
60
60
|
end
|
61
61
|
|
62
62
|
files = result_filenames
|
63
|
+
target ||= files.first
|
63
64
|
|
64
65
|
$_current_job = self
|
65
66
|
$_step_descriptions = @step_descriptions || {}
|
66
|
-
|
67
|
+
|
68
|
+
Rake::Task[target].invoke
|
67
69
|
end
|
68
70
|
|
69
71
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplews
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-15 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|