simplews 1.8.3 → 1.9.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.
@@ -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 infile(t, &block)
127
- File.open(t.prerequisites.first) do |f|
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(t, &block)
133
- File.open(t.name, 'w') do |f|
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(t, step = nil)
139
- if step
140
- info = Rake::Pipeline::Step.parse_filename(t.name)
141
- filename = "#{info[:prefix]}/#{step}/#{info[:job]}"
142
- File.open(filename){|f|
143
- if is_binary?(f)
144
- Marshal.load(f)
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(t, 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(t){|f| f.write output }
176
+ outfile(task){|f| f.write output }
167
177
  else
168
- outfile(t){|f| f.write Marshal.dump(output) }
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.send(symbol, *args)
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
@@ -290,9 +290,10 @@ class SimpleWS::Jobs < SimpleWS
290
290
  save
291
291
  end
292
292
 
293
- def info(info)
293
+ def info(info = {})
294
294
  @state[:info].merge!(info)
295
295
  save
296
+ @state[:info]
296
297
  end
297
298
 
298
299
  def results(results)
@@ -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
- Rake::Task[files.first].invoke
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.8.3
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-01-26 00:00:00 +01:00
12
+ date: 2010-02-15 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency