simple_worker 0.6.4 → 0.6.5
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.
- data/lib/simple_worker/base.rb +48 -32
- data/lib/simple_worker/service.rb +4 -0
- metadata +3 -3
data/lib/simple_worker/base.rb
CHANGED
@@ -35,8 +35,8 @@ module SimpleWorker
|
|
35
35
|
# caller_file = splits[0] + ":" + splits[1]
|
36
36
|
caller_file = caller[0][0...(caller[0].index(":in"))]
|
37
37
|
caller_file = caller_file[0...(caller_file.rindex(":"))]
|
38
|
-
|
39
|
-
|
38
|
+
# puts 'caller_file=' + caller_file
|
39
|
+
# don't need these class_variables anymore probably
|
40
40
|
subclass.instance_variable_set(:@caller_file, caller_file)
|
41
41
|
|
42
42
|
super
|
@@ -52,7 +52,7 @@ module SimpleWorker
|
|
52
52
|
exists = true
|
53
53
|
else
|
54
54
|
# try relative
|
55
|
-
# p caller
|
55
|
+
# p caller
|
56
56
|
f2 = File.join(File.dirname(caller[3]), f)
|
57
57
|
# puts 'f2=' + f2
|
58
58
|
if File.exist? f2
|
@@ -95,8 +95,9 @@ module SimpleWorker
|
|
95
95
|
files<<f
|
96
96
|
end
|
97
97
|
@merged_folders[path]=files unless files.empty?
|
98
|
-
SimpleWorker.logger.info
|
98
|
+
SimpleWorker.logger.info "Merged folders! #{@merged_folders.inspect}"
|
99
99
|
end
|
100
|
+
|
100
101
|
# merges the specified files.
|
101
102
|
# todo: don't allow multiple files per merge, just one like require
|
102
103
|
def merge(*files)
|
@@ -195,6 +196,10 @@ module SimpleWorker
|
|
195
196
|
end
|
196
197
|
end
|
197
198
|
|
199
|
+
def enqueue(options={})
|
200
|
+
queue(options)
|
201
|
+
end
|
202
|
+
|
198
203
|
# Call this to queue up your job to SimpleWorker cloud.
|
199
204
|
# options:
|
200
205
|
# :priority => 0,1 or 2. Default is 0.
|
@@ -324,37 +329,57 @@ module SimpleWorker
|
|
324
329
|
raise "SimpleWorker configuration not set." unless SimpleWorker.service
|
325
330
|
end
|
326
331
|
|
332
|
+
def self.extract_superclasses_merges(worker, merged)
|
333
|
+
subclass = worker.class
|
334
|
+
rfile = subclass.instance_variable_get(:@caller_file) # Base.caller_file # File.expand_path(Base.subclass)
|
335
|
+
# puts 'subclass file=' + rfile.inspect
|
336
|
+
# puts 'subclass.name=' + subclass.name
|
337
|
+
superclass = subclass
|
338
|
+
# Also get merged from subclasses up to SimpleWorker::Base
|
339
|
+
while (superclass = superclass.superclass)
|
340
|
+
#puts 'superclass=' + superclass.name
|
341
|
+
break if superclass.name == SimpleWorker::Base.name
|
342
|
+
super_merged = superclass.instance_variable_get(:@merged)
|
343
|
+
#puts 'merging caller file: ' + superclass.instance_variable_get(:@caller_file).inspect
|
344
|
+
super_merged << superclass.instance_variable_get(:@caller_file)
|
345
|
+
merged = super_merged + merged
|
346
|
+
#puts 'merged with superclass=' + merged.inspect
|
347
|
+
end
|
348
|
+
return merged, rfile, subclass
|
349
|
+
end
|
350
|
+
|
327
351
|
def upload_if_needed
|
328
352
|
check_service
|
329
353
|
SimpleWorker.service.check_config
|
330
354
|
|
331
355
|
before_upload
|
332
356
|
|
357
|
+
merged = self.class.instance_variable_get(:@merged)
|
358
|
+
|
359
|
+
# do merged_workers first because we need to get their subclasses and what not too
|
360
|
+
merged_workers = self.class.instance_variable_get(:@merged_workers)
|
361
|
+
if merged_workers && merged_workers.size > 0
|
362
|
+
SimpleWorker.logger.debug 'now uploading merged workers ' + merged_workers.inspect
|
363
|
+
merged_workers.each do |mw|
|
364
|
+
SimpleWorker.logger.debug 'Instantiating and uploading ' + mw[1]
|
365
|
+
mw_instantiated = Kernel.const_get(mw[1]).new
|
366
|
+
mw_instantiated.upload
|
367
|
+
|
368
|
+
merged, rfile, subclass = SimpleWorker::Base.extract_superclasses_merges(mw_instantiated, merged)
|
369
|
+
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
333
373
|
# puts 'upload_if_needed ' + self.class.name
|
334
|
-
|
374
|
+
# Todo, watch for this file changing or something so we can reupload (if in dev env)
|
335
375
|
unless uploaded?
|
336
|
-
merged = self.class.instance_variable_get(:@merged)
|
337
376
|
unmerged = self.class.instance_variable_get(:@unmerged)
|
338
377
|
merged_gems = self.class.instance_variable_get(:@merged_gems)
|
339
378
|
merged_mailers = self.class.instance_variable_get(:@merged_mailers)
|
340
379
|
merged_folders = self.class.instance_variable_get(:@merged_folders)
|
341
380
|
# puts 'merged1=' + merged.inspect
|
342
381
|
|
343
|
-
subclass = self
|
344
|
-
rfile = subclass.instance_variable_get(:@caller_file) # Base.caller_file # File.expand_path(Base.subclass)
|
345
|
-
# puts 'subclass file=' + rfile.inspect
|
346
|
-
# puts 'subclass.name=' + subclass.name
|
347
|
-
superclass = subclass
|
348
|
-
# Also get merged from subclasses up to SimpleWorker::Base
|
349
|
-
while (superclass = superclass.superclass)
|
350
|
-
# puts 'superclass=' + superclass.name
|
351
|
-
break if superclass.name == SimpleWorker::Base.name
|
352
|
-
super_merged = superclass.instance_variable_get(:@merged)
|
353
|
-
# puts 'merging caller file: ' + superclass.instance_variable_get(:@caller_file).inspect
|
354
|
-
super_merged << superclass.instance_variable_get(:@caller_file)
|
355
|
-
merged = super_merged + merged
|
356
|
-
# puts 'merged with superclass=' + merged.inspect
|
357
|
-
end
|
382
|
+
merged, rfile, subclass = SimpleWorker::Base.extract_superclasses_merges(self, merged)
|
358
383
|
if SimpleWorker.config.auto_merge
|
359
384
|
puts "Auto merge Enabled"
|
360
385
|
merged += SimpleWorker.config.models if SimpleWorker.config.models
|
@@ -369,21 +394,12 @@ module SimpleWorker
|
|
369
394
|
end
|
370
395
|
merged.uniq!
|
371
396
|
merged_mailers.uniq!
|
372
|
-
SimpleWorker.service.upload(rfile, subclass.name, :merge=>merged, :unmerge=>unmerged, :merged_gems=>merged_gems, :merged_mailers=>merged_mailers
|
397
|
+
SimpleWorker.service.upload(rfile, subclass.name, :merge=>merged, :unmerge=>unmerged, :merged_gems=>merged_gems, :merged_mailers=>merged_mailers, :merged_folders=>merged_folders)
|
373
398
|
self.class.instance_variable_set(:@uploaded, true)
|
374
399
|
else
|
375
400
|
SimpleWorker.logger.debug 'Already uploaded for ' + self.class.name
|
376
401
|
end
|
377
|
-
|
378
|
-
if merged_workers.size > 0
|
379
|
-
# puts 'now uploading merged workers ' + merged_workers.inspect
|
380
|
-
merged_workers.each do |mw|
|
381
|
-
# to support merges in the secondary worker, we should instantiate it here, then call "upload"
|
382
|
-
SimpleWorker.logger.debug 'Instantiating and uploading ' + mw[1]
|
383
|
-
Kernel.const_get(mw[1]).new.upload
|
384
|
-
# SimpleWorker.service.upload(mw[0], mw[1])
|
385
|
-
end
|
386
|
-
end
|
402
|
+
|
387
403
|
|
388
404
|
after_upload
|
389
405
|
end
|
@@ -215,6 +215,10 @@ module SimpleWorker
|
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
218
|
+
def enqueue(class_name, data={}, options={})
|
219
|
+
queue(class_name, data, options)
|
220
|
+
end
|
221
|
+
|
218
222
|
# class_name: The class name of a previously upload class, eg: MySuperWorker
|
219
223
|
# data: Arbitrary hash of your own data that your task will need to run.
|
220
224
|
def queue(class_name, data={}, options={})
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: simple_worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.6.
|
5
|
+
version: 0.6.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Travis Reeder
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-18 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: zip
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
requirements: []
|
77
77
|
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.
|
79
|
+
rubygems_version: 1.8.5
|
80
80
|
signing_key:
|
81
81
|
specification_version: 3
|
82
82
|
summary: The official SimpleWorker gem for http://www.simpleworker.com
|