simple_worker 0.5.8 → 0.6.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.
- data/README.markdown +5 -0
- data/lib/railtie.rb +24 -5
- data/lib/simple_worker/base.rb +67 -4
- data/lib/simple_worker/config.rb +12 -2
- data/lib/simple_worker/service.rb +56 -7
- data/lib/simple_worker.rb +2 -4
- metadata +6 -59
- data/test/awesome_job.rb +0 -25
- data/test/cool_model.rb +0 -7
- data/test/cool_worker.rb +0 -14
- data/test/db_worker.rb +0 -18
- data/test/models/model_1.rb +0 -22
- data/test/models/model_2.rb +0 -22
- data/test/requiring_worker.rb +0 -4
- data/test/scheduled_worker.rb +0 -15
- data/test/second_worker.rb +0 -20
- data/test/test_base.rb +0 -57
- data/test/test_gems.rb +0 -18
- data/test/test_inheritance.rb +0 -19
- data/test/test_no_config.rb +0 -25
- data/test/test_simple_worker.rb +0 -106
- data/test/test_worker.rb +0 -29
- data/test/test_worker_2.rb +0 -60
- data/test/test_worker_3.rb +0 -22
- data/test/trace_object.rb +0 -6
- data/test/zip_vs_gzip.rb +0 -26
data/README.markdown
CHANGED
@@ -111,6 +111,7 @@ This will return a hash like:
|
|
111
111
|
"duration"=>nil,
|
112
112
|
"progress"=>{"percent"=>25}}
|
113
113
|
|
114
|
+
There is also a convenience method `worker.wait_until_complete` that will wait until the status returned is completed or error.
|
114
115
|
|
115
116
|
Logging
|
116
117
|
-------
|
@@ -227,8 +228,12 @@ Merging Gems
|
|
227
228
|
|
228
229
|
This allows you to use any gem you'd like with SimpleWorker. This uses the same syntax as bundler gem files.
|
229
230
|
|
231
|
+
# merge latest version of the gem
|
230
232
|
merge_gem "some_gem"
|
233
|
+
# or specify specific version
|
231
234
|
merge_gem "some_gem_with_version", "1.2.3"
|
235
|
+
# or if gem has poor naming scheme
|
236
|
+
merge_gem 'mongoid_i18n', :require => 'mongoid/i18n'
|
232
237
|
|
233
238
|
[Check here for more info on merge_gem](http://support.simpleworker.com/kb/working-with-simpleworker/merging-gems-into-your-worker).
|
234
239
|
|
data/lib/railtie.rb
CHANGED
@@ -5,18 +5,37 @@ require 'rails'
|
|
5
5
|
|
6
6
|
module SimpleWorker
|
7
7
|
class Railtie < Rails::Railtie
|
8
|
-
# railtie_name :simple_worker deprecated
|
8
|
+
# railtie_name :simple_worker deprecated
|
9
9
|
|
10
10
|
initializer "simple_worker.configure_rails_initialization" do |app|
|
11
11
|
puts "Initializing SimpleWorker for Rails 3..."
|
12
12
|
SimpleWorker.configure do |c2|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
models_path = File.join(Rails.root, 'app/models/*.rb')
|
14
|
+
c2.models = Dir.glob(models_path)
|
15
|
+
mailers_path = File.join(Rails.root, 'app/mailers/*.rb')
|
16
|
+
c2.mailers =Dir.glob(mailers_path).collect { |m| {:filename=>m, :name => File.basename(m), :path_to_templates=>File.join(Rails.root, "app/views/#{File.basename(m, File.extname(m))}")} }
|
16
17
|
c2.extra_requires += ['active_support/core_ext', 'active_record', 'action_mailer']
|
17
|
-
|
18
|
+
c2.database = Rails.configuration.database_configuration[Rails.env]
|
19
|
+
c2.gems = get_required_gems if Bundler
|
20
|
+
puts "MODELS" + c2.models.inspect
|
21
|
+
puts "MAILERS" + c2.mailers.inspect
|
22
|
+
puts "DATABASE" + c2.database.inspect
|
23
|
+
puts "GEMS" + c2.gems.inspect
|
18
24
|
end
|
25
|
+
end
|
19
26
|
|
27
|
+
def get_required_gems
|
28
|
+
gems_in_gemfile = Bundler.environment.dependencies.select { |d| d.groups.include?(:default) }
|
29
|
+
gems =[]
|
30
|
+
gems_in_gemfile.each do |dep|
|
31
|
+
next if dep.name=='rails' #monkey patch
|
32
|
+
gem_info = {:name=>dep.name, :version=>dep.requirement}
|
33
|
+
gem_info.merge!({:require=>dep.autorequire.join}) if dep.autorequire
|
34
|
+
gem_info[:version] = Bundler.load.specs.find { |g| g.name==gem_info[:name] }.version.to_s
|
35
|
+
gems << gem_info
|
36
|
+
end
|
37
|
+
gems
|
20
38
|
end
|
21
39
|
end
|
40
|
+
|
22
41
|
end
|
data/lib/simple_worker/base.rb
CHANGED
@@ -12,12 +12,14 @@ module SimpleWorker
|
|
12
12
|
@merged = []
|
13
13
|
@merged_workers = []
|
14
14
|
@merged_gems = []
|
15
|
+
@merged_mailers = []
|
15
16
|
@unmerged = []
|
16
17
|
|
17
18
|
def reset!
|
18
19
|
@merged = []
|
19
20
|
@merged_workers = []
|
20
21
|
@merged_gems = []
|
22
|
+
@merged_mailers = []
|
21
23
|
@unmerged = []
|
22
24
|
end
|
23
25
|
|
@@ -50,7 +52,7 @@ module SimpleWorker
|
|
50
52
|
# try relative
|
51
53
|
# p caller
|
52
54
|
f2 = File.join(File.dirname(caller[3]), f)
|
53
|
-
puts 'f2=' + f2
|
55
|
+
# puts 'f2=' + f2
|
54
56
|
if File.exist? f2
|
55
57
|
exists = true
|
56
58
|
f = f2
|
@@ -66,7 +68,7 @@ module SimpleWorker
|
|
66
68
|
|
67
69
|
# merges the specified gem.
|
68
70
|
def merge_gem(gem_name, version=nil)
|
69
|
-
gem_info = {:name=>gem_name}
|
71
|
+
gem_info = {:name=>gem_name, :merge=>true}
|
70
72
|
if version.is_a?(Hash)
|
71
73
|
gem_info.merge!(version)
|
72
74
|
else
|
@@ -76,6 +78,14 @@ module SimpleWorker
|
|
76
78
|
require gem_info[:require] || gem_name
|
77
79
|
end
|
78
80
|
|
81
|
+
#merge action_mailer mailers
|
82
|
+
def merge_mailer(mailer, params={})
|
83
|
+
check_for_file mailer
|
84
|
+
basename = File.basename(mailer, File.extname(mailer))
|
85
|
+
path_to_templates = params[:path_to_templates] || File.join(Rails.root, "app/views/#{basename}")
|
86
|
+
@merged_mailers << {:name=>basename, :path_to_templates=>path_to_templates, :filename => mailer}.merge!(params)
|
87
|
+
end
|
88
|
+
|
79
89
|
# merges the specified files.
|
80
90
|
# todo: don't allow multiple files per merge, just one like require
|
81
91
|
def merge(*files)
|
@@ -192,13 +202,33 @@ module SimpleWorker
|
|
192
202
|
end
|
193
203
|
|
194
204
|
def status
|
205
|
+
check_service
|
206
|
+
if task_id
|
207
|
+
task_status
|
208
|
+
elsif schedule_id
|
209
|
+
schedule_status
|
210
|
+
else
|
211
|
+
raise "Queue or schedule before check status."
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
def task_status
|
195
216
|
SimpleWorker.service.status(task_id)
|
196
217
|
end
|
197
218
|
|
219
|
+
def is_local?
|
220
|
+
!is_remote?
|
221
|
+
end
|
222
|
+
|
223
|
+
def is_remote?
|
224
|
+
false
|
225
|
+
end
|
226
|
+
|
198
227
|
# will return after job has completed or errored out.
|
199
228
|
# Returns status.
|
200
229
|
# todo: add a :timeout option
|
201
230
|
def wait_until_complete
|
231
|
+
check_service
|
202
232
|
tries = 0
|
203
233
|
status = nil
|
204
234
|
sleep 1
|
@@ -266,7 +296,26 @@ module SimpleWorker
|
|
266
296
|
|
267
297
|
private
|
268
298
|
|
299
|
+
def gems_to_merge(merged_gems)
|
300
|
+
list_of_gems =[]
|
301
|
+
if merged_gems && merged_gems.size > 0
|
302
|
+
installed_gems = SimpleWorker.config.get_server_gems
|
303
|
+
merged_gems.each do |gem|
|
304
|
+
gem.merge!({:merge=>(!installed_gems.find { |g| g["name"]==gem[:name] && g["version"]==gem[:version] })})
|
305
|
+
list_of_gems<< gem if (list_of_gems.select { |g| g[:name]==gem[:name] }).empty?
|
306
|
+
end
|
307
|
+
SimpleWorker.logger.debug "#{list_of_gems.inspect}"
|
308
|
+
end
|
309
|
+
list_of_gems
|
310
|
+
end
|
311
|
+
|
312
|
+
def check_service
|
313
|
+
raise "SimpleWorker configuration not set." unless SimpleWorker.service
|
314
|
+
end
|
315
|
+
|
269
316
|
def upload_if_needed
|
317
|
+
check_service
|
318
|
+
SimpleWorker.service.check_config
|
270
319
|
|
271
320
|
before_upload
|
272
321
|
|
@@ -276,6 +325,7 @@ module SimpleWorker
|
|
276
325
|
merged = self.class.instance_variable_get(:@merged)
|
277
326
|
unmerged = self.class.instance_variable_get(:@unmerged)
|
278
327
|
merged_gems = self.class.instance_variable_get(:@merged_gems)
|
328
|
+
merged_mailers = self.class.instance_variable_get(:@merged_mailers)
|
279
329
|
# puts 'merged1=' + merged.inspect
|
280
330
|
|
281
331
|
subclass = self.class
|
@@ -293,8 +343,21 @@ module SimpleWorker
|
|
293
343
|
merged = super_merged + merged
|
294
344
|
# puts 'merged with superclass=' + merged.inspect
|
295
345
|
end
|
296
|
-
|
297
|
-
|
346
|
+
if SimpleWorker.config.auto_merge
|
347
|
+
puts "Auto merge Enabled"
|
348
|
+
merged += SimpleWorker.config.models if SimpleWorker.config.models
|
349
|
+
merged_mailers += SimpleWorker.config.mailers if SimpleWorker.config.mailers
|
350
|
+
SimpleWorker.config.gems.each do |gem|
|
351
|
+
merged_gems<<gem
|
352
|
+
end
|
353
|
+
end
|
354
|
+
unless merged_gems.empty?
|
355
|
+
merged_gems = gems_to_merge(merged_gems)
|
356
|
+
merged_gems.uniq!
|
357
|
+
end
|
358
|
+
merged.uniq!
|
359
|
+
merged_mailers.uniq!
|
360
|
+
SimpleWorker.service.upload(rfile, subclass.name, :merge=>merged, :unmerge=>unmerged, :merged_gems=>merged_gems, :merged_mailers=>merged_mailers)
|
298
361
|
self.class.instance_variable_set(:@uploaded, true)
|
299
362
|
else
|
300
363
|
SimpleWorker.logger.debug 'Already uploaded for ' + self.class.name
|
data/lib/simple_worker/config.rb
CHANGED
@@ -15,12 +15,22 @@ module SimpleWorker
|
|
15
15
|
:host,
|
16
16
|
:global_attributes,
|
17
17
|
:models,
|
18
|
+
:mailers,
|
19
|
+
:gems,
|
18
20
|
:database,
|
19
|
-
:extra_requires
|
21
|
+
:extra_requires,
|
22
|
+
:auto_merge,
|
23
|
+
:server_gems
|
24
|
+
|
20
25
|
|
21
26
|
def initialize
|
22
27
|
@global_attributes = {}
|
23
|
-
@extra_requires
|
28
|
+
@extra_requires = []
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_server_gems
|
32
|
+
self.server_gems = SimpleWorker.service.get_server_gems unless self.server_gems
|
33
|
+
self.server_gems
|
24
34
|
end
|
25
35
|
|
26
36
|
def get_atts_to_send
|
@@ -21,7 +21,14 @@ module SimpleWorker
|
|
21
21
|
|
22
22
|
def initialize(access_key, secret_key, options={})
|
23
23
|
SimpleWorker.logger.info 'Starting SimpleWorker::Service...'
|
24
|
-
|
24
|
+
if options[:config]
|
25
|
+
self.config = options[:config]
|
26
|
+
else
|
27
|
+
c = SimpleWorker::Config.new unless self.config
|
28
|
+
c.access_key = access_key
|
29
|
+
c.secret_key = secret_key
|
30
|
+
self.config = c
|
31
|
+
end
|
25
32
|
super("http://api.simpleworker.com/api/", access_key, secret_key, options)
|
26
33
|
self.host = self.config.host if self.config && self.config.host
|
27
34
|
end
|
@@ -52,7 +59,7 @@ module SimpleWorker
|
|
52
59
|
end
|
53
60
|
|
54
61
|
|
55
|
-
zip_filename = build_merged_file(filename, options[:merge], options[:unmerge], options[:merged_gems])
|
62
|
+
zip_filename = build_merged_file(filename, options[:merge], options[:unmerge], options[:merged_gems], options[:merged_mailers])
|
56
63
|
|
57
64
|
# sys.classes[subclass].__file__
|
58
65
|
# puts '__FILE__=' + Base.subclass.__file__.to_s
|
@@ -76,12 +83,18 @@ module SimpleWorker
|
|
76
83
|
end
|
77
84
|
end
|
78
85
|
|
86
|
+
def get_server_gems
|
87
|
+
hash = get("gems/list")
|
88
|
+
JSON.parse(hash["gems"])
|
89
|
+
end
|
90
|
+
|
79
91
|
def get_gem_path(gem_info)
|
80
92
|
gem_name =(gem_info[:require] || gem_info[:name].match(/^[a-zA-Z0-9\-_]+/)[0])
|
81
93
|
puts "Searching for #{gem_name}..."
|
82
94
|
searcher = Gem::GemPathSearcher.new
|
83
|
-
gems
|
84
|
-
|
95
|
+
gems = searcher.find_all(gem_name)
|
96
|
+
# gems = searcher.init_gemspecs.select { |gem| gem.name==gem_name }
|
97
|
+
puts 'gems found=' + gems.inspect
|
85
98
|
gems = gems.select { |g| g.version.version==gem_info[:version] } if gem_info[:version]
|
86
99
|
if !gems.empty?
|
87
100
|
gem = gems.first
|
@@ -91,7 +104,7 @@ module SimpleWorker
|
|
91
104
|
end
|
92
105
|
end
|
93
106
|
|
94
|
-
def build_merged_file(filename, merge, unmerge, merged_gems)
|
107
|
+
def build_merged_file(filename, merge, unmerge, merged_gems, merged_mailers)
|
95
108
|
# unless (merge && merge.size > 0) || (merged_gems && merged_gems.size > 0)
|
96
109
|
# return filename
|
97
110
|
# end
|
@@ -110,6 +123,28 @@ module SimpleWorker
|
|
110
123
|
f.write "require '#{r}'\n"
|
111
124
|
end
|
112
125
|
end
|
126
|
+
if merged_mailers
|
127
|
+
f.write "require 'action_mailer'\n"
|
128
|
+
f.write "ActionMailer::Base.prepend_view_path('templates')\n"
|
129
|
+
end
|
130
|
+
if SimpleWorker.config.auto_merge
|
131
|
+
if SimpleWorker.config.gems
|
132
|
+
SimpleWorker.config.gems.each do |gem|
|
133
|
+
f.write "$LOAD_PATH << File.join(File.dirname(__FILE__), '/gems/#{gem[:name]}')\n" if gem[:merge]
|
134
|
+
f.write "require '#{gem[:require]||gem[:name]}'\n"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
if SimpleWorker.config.models
|
138
|
+
SimpleWorker.config.models.each do |model|
|
139
|
+
f.write "require File.join(File.dirname(__FILE__),'#{File.basename(model)}')\n"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
if SimpleWorker.config.mailers
|
143
|
+
SimpleWorker.config.mailers.each do |mailer|
|
144
|
+
f.write "require File.join(File.dirname(__FILE__),'#{mailer[:name]}')\n"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
113
148
|
f.write File.open(filename, 'r') { |mo| mo.read }
|
114
149
|
end
|
115
150
|
merge << tmp_file
|
@@ -121,10 +156,10 @@ module SimpleWorker
|
|
121
156
|
# puts 'merged_file_array=' + merge.inspect
|
122
157
|
#File.open(fname2, "w") do |f|
|
123
158
|
File.delete(fname2) if File.exist?(fname2)
|
124
|
-
|
125
159
|
Zip::ZipFile.open(fname2, 'w') do |f|
|
126
160
|
if merged_gems
|
127
161
|
merged_gems.each do |gem|
|
162
|
+
next unless gem[:merge]
|
128
163
|
# puts 'gem=' + gem.inspect
|
129
164
|
path = get_gem_path(gem)
|
130
165
|
if path
|
@@ -145,6 +180,20 @@ module SimpleWorker
|
|
145
180
|
# puts "merging #{m} into #{filename}"
|
146
181
|
f.add(File.basename(m), m)
|
147
182
|
end
|
183
|
+
puts "merge models - done"
|
184
|
+
if merged_mailers
|
185
|
+
puts " MERGED MAILERS" + merged_mailers.inspect
|
186
|
+
merged_mailers.each do |mailer|
|
187
|
+
puts "Collecting mailer #{mailer[:name]}"
|
188
|
+
f.add(File.basename(mailer[:filename]), mailer[:filename])
|
189
|
+
path = mailer[:path_to_templates]
|
190
|
+
Dir["#{path}/**/**"].each do |file|
|
191
|
+
zdest = "templates/#{mailer[:name]}/#{file.sub(path+'/', '')}"
|
192
|
+
f.add(zdest, file)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
puts "merging templates - done"
|
148
197
|
end
|
149
198
|
fname2
|
150
199
|
end
|
@@ -223,7 +272,7 @@ module SimpleWorker
|
|
223
272
|
def cancel_schedule(scheduled_task_id)
|
224
273
|
raise "Must include a schedule id." if scheduled_task_id.blank?
|
225
274
|
hash_to_send = {}
|
226
|
-
hash_to_send["
|
275
|
+
hash_to_send["schedule_id"] = scheduled_task_id
|
227
276
|
ret = post("scheduler/cancel", hash_to_send)
|
228
277
|
ret
|
229
278
|
end
|
data/lib/simple_worker.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'appoxy_api'
|
2
|
-
require 'active_support/core_ext'
|
2
|
+
#require 'active_support/core_ext'
|
3
3
|
require_relative 'simple_worker/service'
|
4
4
|
require_relative 'simple_worker/base'
|
5
5
|
require_relative 'simple_worker/config'
|
@@ -14,7 +14,7 @@ module SimpleWorker
|
|
14
14
|
|
15
15
|
def configure()
|
16
16
|
yield(config)
|
17
|
-
SimpleWorker.service
|
17
|
+
SimpleWorker.service ||= Service.new(config.access_key, config.secret_key, :config=>config)
|
18
18
|
end
|
19
19
|
|
20
20
|
def config
|
@@ -23,8 +23,6 @@ module SimpleWorker
|
|
23
23
|
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
26
|
end
|
29
27
|
|
30
28
|
if defined?(Rails)
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 5
|
8
|
-
- 8
|
9
|
-
version: 0.5.8
|
4
|
+
prerelease:
|
5
|
+
version: 0.6.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Travis Reeder
|
@@ -14,8 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
18
|
-
default_executable:
|
13
|
+
date: 2011-05-26 00:00:00 Z
|
19
14
|
dependencies:
|
20
15
|
- !ruby/object:Gem::Dependency
|
21
16
|
name: appoxy_api
|
@@ -25,10 +20,6 @@ dependencies:
|
|
25
20
|
requirements:
|
26
21
|
- - ">="
|
27
22
|
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 0
|
31
|
-
- 11
|
32
23
|
version: 0.0.11
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
@@ -40,8 +31,6 @@ dependencies:
|
|
40
31
|
requirements:
|
41
32
|
- - ">="
|
42
33
|
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 0
|
45
34
|
version: "0"
|
46
35
|
type: :runtime
|
47
36
|
version_requirements: *id002
|
@@ -63,26 +52,6 @@ files:
|
|
63
52
|
- lib/simple_worker/used_in_worker.rb
|
64
53
|
- rails/init.rb
|
65
54
|
- README.markdown
|
66
|
-
- test/awesome_job.rb
|
67
|
-
- test/cool_model.rb
|
68
|
-
- test/cool_worker.rb
|
69
|
-
- test/db_worker.rb
|
70
|
-
- test/models/model_1.rb
|
71
|
-
- test/models/model_2.rb
|
72
|
-
- test/requiring_worker.rb
|
73
|
-
- test/scheduled_worker.rb
|
74
|
-
- test/second_worker.rb
|
75
|
-
- test/test_base.rb
|
76
|
-
- test/test_gems.rb
|
77
|
-
- test/test_inheritance.rb
|
78
|
-
- test/test_no_config.rb
|
79
|
-
- test/test_simple_worker.rb
|
80
|
-
- test/test_worker.rb
|
81
|
-
- test/test_worker_2.rb
|
82
|
-
- test/test_worker_3.rb
|
83
|
-
- test/trace_object.rb
|
84
|
-
- test/zip_vs_gzip.rb
|
85
|
-
has_rdoc: true
|
86
55
|
homepage: http://github.com/appoxy/simple_worker
|
87
56
|
licenses: []
|
88
57
|
|
@@ -96,41 +65,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
65
|
requirements:
|
97
66
|
- - ">="
|
98
67
|
- !ruby/object:Gem::Version
|
99
|
-
segments:
|
100
|
-
- 0
|
101
68
|
version: "0"
|
102
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
70
|
none: false
|
104
71
|
requirements:
|
105
72
|
- - ">="
|
106
73
|
- !ruby/object:Gem::Version
|
107
|
-
segments:
|
108
|
-
- 0
|
109
74
|
version: "0"
|
110
75
|
requirements: []
|
111
76
|
|
112
77
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.
|
78
|
+
rubygems_version: 1.7.2
|
114
79
|
signing_key:
|
115
80
|
specification_version: 3
|
116
81
|
summary: The official SimpleWorker gem for http://www.simpleworker.com
|
117
|
-
test_files:
|
118
|
-
|
119
|
-
- test/cool_model.rb
|
120
|
-
- test/cool_worker.rb
|
121
|
-
- test/db_worker.rb
|
122
|
-
- test/models/model_1.rb
|
123
|
-
- test/models/model_2.rb
|
124
|
-
- test/requiring_worker.rb
|
125
|
-
- test/scheduled_worker.rb
|
126
|
-
- test/second_worker.rb
|
127
|
-
- test/test_base.rb
|
128
|
-
- test/test_gems.rb
|
129
|
-
- test/test_inheritance.rb
|
130
|
-
- test/test_no_config.rb
|
131
|
-
- test/test_simple_worker.rb
|
132
|
-
- test/test_worker.rb
|
133
|
-
- test/test_worker_2.rb
|
134
|
-
- test/test_worker_3.rb
|
135
|
-
- test/trace_object.rb
|
136
|
-
- test/zip_vs_gzip.rb
|
82
|
+
test_files: []
|
83
|
+
|
data/test/awesome_job.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
|
2
|
-
class AwesomeJob < SimpleWorker::Base
|
3
|
-
merge_gem 'dropbox' # , '1.2.3'
|
4
|
-
# bumpdsfsdfdsfasdf
|
5
|
-
merge_gem 'mongoid_i18n', :require => 'mongoid/i18n'
|
6
|
-
|
7
|
-
def run
|
8
|
-
begin
|
9
|
-
s = Dropbox::Session.new('...', '...')
|
10
|
-
rescue => ex
|
11
|
-
log "Dropbox doesn't like it when you don't have keys"
|
12
|
-
end
|
13
|
-
# s.mode = :dropbox
|
14
|
-
# s.authorizing_user = 'email@gmail.com'
|
15
|
-
# s.authorizing_password = '...'
|
16
|
-
# s.authorize!
|
17
|
-
#
|
18
|
-
# tmp_file = Tempfile.new('myfile.txt')
|
19
|
-
# tmp_file.write("blahblah")
|
20
|
-
# tmp_file.close
|
21
|
-
#
|
22
|
-
# s.upload tmp_file.path, 'Test'
|
23
|
-
# tmp_file.unlink
|
24
|
-
end
|
25
|
-
end
|
data/test/cool_model.rb
DELETED
data/test/cool_worker.rb
DELETED
data/test/db_worker.rb
DELETED
data/test/models/model_1.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require File.join(File.dirname(__FILE__), '../../lib/simple_worker')
|
3
|
-
rescue Exception => ex
|
4
|
-
puts 'ERROR!!! ' + ex.message
|
5
|
-
# require 'simple_worker'
|
6
|
-
end
|
7
|
-
|
8
|
-
|
9
|
-
class Model1
|
10
|
-
attr_accessor :heidi, :ho
|
11
|
-
|
12
|
-
include SimpleWorker::UsedInWorker
|
13
|
-
|
14
|
-
def say_hello
|
15
|
-
log "Hi there sir"
|
16
|
-
end
|
17
|
-
|
18
|
-
# testk laksdfj klasj df
|
19
|
-
def test
|
20
|
-
log 'test'
|
21
|
-
end
|
22
|
-
end
|
data/test/models/model_2.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require File.join(File.dirname(__FILE__), '../../lib/simple_worker')
|
3
|
-
rescue Exception => ex
|
4
|
-
puts 'ERROR!!! ' + ex.message
|
5
|
-
# require 'simple_worker'
|
6
|
-
end
|
7
|
-
|
8
|
-
|
9
|
-
class Model2
|
10
|
-
attr_accessor :heidi, :ho
|
11
|
-
|
12
|
-
include SimpleWorker::UsedInWorker
|
13
|
-
|
14
|
-
def say_hello
|
15
|
-
log "Hi there sir"
|
16
|
-
end
|
17
|
-
|
18
|
-
# testk laksdfj klasj df
|
19
|
-
def test
|
20
|
-
log 'test'
|
21
|
-
end
|
22
|
-
end
|
data/test/requiring_worker.rb
DELETED
data/test/scheduled_worker.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
3
|
-
rescue Exception
|
4
|
-
require 'simple_worker'
|
5
|
-
end
|
6
|
-
|
7
|
-
|
8
|
-
class ScheduledWorker < SimpleWorker::Base
|
9
|
-
|
10
|
-
def scheduled_run(data=nil)
|
11
|
-
log "This is scheduled yes it is"
|
12
|
-
log data.inspect
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
data/test/second_worker.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
3
|
-
rescue Exception => ex
|
4
|
-
puts ex.message
|
5
|
-
require 'simple_worker'
|
6
|
-
end
|
7
|
-
|
8
|
-
class SecondWorker < SimpleWorker::Base
|
9
|
-
attr_accessor :start_time, :num
|
10
|
-
|
11
|
-
# change
|
12
|
-
|
13
|
-
def run
|
14
|
-
log self.to_s
|
15
|
-
end
|
16
|
-
|
17
|
-
def to_s
|
18
|
-
"I am Second Worker #{num}. I was started at #{start_time}"
|
19
|
-
end
|
20
|
-
end
|
data/test/test_base.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'yaml'
|
3
|
-
begin
|
4
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
5
|
-
rescue Exception => ex
|
6
|
-
puts "Could NOT load current simple_worker: " + ex.message
|
7
|
-
require 'simple_worker'
|
8
|
-
end
|
9
|
-
require_relative "test_worker"
|
10
|
-
require_relative "test_worker_2"
|
11
|
-
require_relative "test_worker_3"
|
12
|
-
|
13
|
-
class TestBase < Test::Unit::TestCase
|
14
|
-
|
15
|
-
def setup
|
16
|
-
@config = YAML::load(File.open(File.expand_path("~/.test_configs/simple_worker.yml")))
|
17
|
-
#puts @config.inspect
|
18
|
-
@access_key = @config['simple_worker']['access_key']
|
19
|
-
@secret_key = @config['simple_worker']['secret_key']
|
20
|
-
|
21
|
-
# new style
|
22
|
-
SimpleWorker.configure do |config|
|
23
|
-
config.access_key = @access_key
|
24
|
-
config.secret_key = @secret_key
|
25
|
-
config.host = @config['simple_worker']['host']
|
26
|
-
config.global_attributes["db_user"] = "sa"
|
27
|
-
config.global_attributes["db_pass"] = "pass"
|
28
|
-
config.database = @config['database']
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def wait_for_task(params={})
|
34
|
-
tries = 0
|
35
|
-
status = nil
|
36
|
-
sleep 1
|
37
|
-
while tries < 60
|
38
|
-
status = status_for(params)
|
39
|
-
puts 'status = ' + status.inspect
|
40
|
-
if status["status"] == "complete" || status["status"] == "error"
|
41
|
-
break
|
42
|
-
end
|
43
|
-
sleep 2
|
44
|
-
end
|
45
|
-
status
|
46
|
-
end
|
47
|
-
|
48
|
-
def status_for(ob)
|
49
|
-
if ob.is_a?(Hash)
|
50
|
-
ob[:schedule_id] ? WORKER.schedule_status(ob[:schedule_id]) : WORKER.status(ob[:task_id])
|
51
|
-
else
|
52
|
-
ob.status
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
end
|
data/test/test_gems.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require_relative 'test_base'
|
2
|
-
require_relative 'awesome_job'
|
3
|
-
|
4
|
-
|
5
|
-
class TestGems < TestBase
|
6
|
-
|
7
|
-
def test_dropbox_gem
|
8
|
-
|
9
|
-
worker = AwesomeJob.new
|
10
|
-
worker.queue
|
11
|
-
|
12
|
-
wait_for_task(worker)
|
13
|
-
|
14
|
-
puts 'log=' + worker.get_log
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
data/test/test_inheritance.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require_relative 'test_base'
|
2
|
-
|
3
|
-
class TestInheritance < TestBase
|
4
|
-
|
5
|
-
def test_who_am_i
|
6
|
-
|
7
|
-
worker = TestWorker2.new
|
8
|
-
puts "1: " + worker.who_am_i?
|
9
|
-
puts "2: " + worker.who_am_i2?
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_multi_subs
|
15
|
-
t3 = TestWorker3.new
|
16
|
-
t3.queue
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
data/test/test_no_config.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
begin
|
3
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
4
|
-
rescue Exception => ex
|
5
|
-
puts ex.message
|
6
|
-
require 'simple_worker'
|
7
|
-
end
|
8
|
-
require_relative "test_worker"
|
9
|
-
require_relative "test_worker_2"
|
10
|
-
|
11
|
-
|
12
|
-
class SimpleWorkerTests < Test::Unit::TestCase
|
13
|
-
|
14
|
-
def test_no_conf
|
15
|
-
# Add something to queue, get task ID back
|
16
|
-
tw = TestWorker.new
|
17
|
-
tw.s3_key = "active style runner"
|
18
|
-
tw.times = 3
|
19
|
-
|
20
|
-
tw.run_local
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
data/test/test_simple_worker.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
require_relative 'test_base'
|
3
|
-
require_relative 'cool_worker'
|
4
|
-
require_relative 'cool_model'
|
5
|
-
require_relative 'trace_object'
|
6
|
-
require_relative 'db_worker'
|
7
|
-
|
8
|
-
class SimpleWorkerTests < TestBase
|
9
|
-
|
10
|
-
|
11
|
-
def test_new_worker_style
|
12
|
-
# Add something to queue, get task ID back
|
13
|
-
tw = TestWorker2.new
|
14
|
-
tw.s3_key = "active style runner"
|
15
|
-
tw.times = 3
|
16
|
-
tw.x = true
|
17
|
-
|
18
|
-
# schedule up a task
|
19
|
-
# start_at = 10.seconds.since
|
20
|
-
# response_hash_single = tw.schedule(:start_at=>start_at, :run_every=>30, :run_times=>3)
|
21
|
-
# puts 'response_hash=' + response_hash_single.inspect
|
22
|
-
#
|
23
|
-
# 10.times do |i|
|
24
|
-
# puts "status #{i}: " + tw.schedule_status.inspect
|
25
|
-
# end
|
26
|
-
|
27
|
-
# queue up a task
|
28
|
-
puts 'queuing ' + tw.inspect
|
29
|
-
|
30
|
-
response_hash_single = nil
|
31
|
-
5.times do |i|
|
32
|
-
begin
|
33
|
-
response_hash_single = tw.queue
|
34
|
-
rescue => ex
|
35
|
-
puts ex.message
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
puts 'response_hash=' + response_hash_single.inspect
|
40
|
-
puts 'task_id=' + tw.task_id
|
41
|
-
10.times do |i|
|
42
|
-
puts "status #{i}: " + tw.status.inspect
|
43
|
-
break if tw.status["status"] == "complete"
|
44
|
-
sleep 2
|
45
|
-
end
|
46
|
-
|
47
|
-
assert tw.status["status"] == "complete"
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_global_attributes
|
52
|
-
worker = TestWorker3.new
|
53
|
-
worker.run_local
|
54
|
-
|
55
|
-
puts 'worker=' + worker.inspect
|
56
|
-
|
57
|
-
assert_equal "sa", worker.db_user
|
58
|
-
assert_equal "pass", worker.db_pass
|
59
|
-
assert_equal 123, worker.x
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
def test_data_passing
|
65
|
-
cool = CoolWorker.new
|
66
|
-
cool.array_of_models = [CoolModel.new(:name=>"name1"), CoolModel.new(:name=>"name2")]
|
67
|
-
cool.queue
|
68
|
-
status = wait_for_task(cool)
|
69
|
-
assert status["status"] == "complete"
|
70
|
-
log = SimpleWorker.service.log(cool.task_id)
|
71
|
-
puts 'log=' + log.inspect
|
72
|
-
assert log.length > 10
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_exceptions
|
77
|
-
worker = TestWorker.new
|
78
|
-
worker.queue
|
79
|
-
status = wait_for_task(worker)
|
80
|
-
assert status["status"] == "error"
|
81
|
-
assert status["msg"].present?
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_active_record
|
85
|
-
dbw = DbWorker.new
|
86
|
-
dbw.run_local
|
87
|
-
assert !dbw.ob.nil?
|
88
|
-
assert !dbw.ob.id.nil?
|
89
|
-
|
90
|
-
dbw.queue
|
91
|
-
# would be interesting if the object could update itself on complete. Like it would retrieve new values from
|
92
|
-
# finished job when calling status or something.
|
93
|
-
|
94
|
-
status = wait_for_task(dbw)
|
95
|
-
assert status["status"] == "complete"
|
96
|
-
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
|
101
|
-
def test_require_relative_merge
|
102
|
-
|
103
|
-
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
data/test/test_worker.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#begin
|
2
|
-
# require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
3
|
-
#rescue Exception => ex
|
4
|
-
# puts ex.message
|
5
|
-
# require 'simple_worker'
|
6
|
-
#end
|
7
|
-
# Bump for new checksum.
|
8
|
-
class TestWorker < SimpleWorker::Base
|
9
|
-
|
10
|
-
attr_accessor :s3_key, :times
|
11
|
-
|
12
|
-
def run
|
13
|
-
log 'running the test worker for moi '.upcase
|
14
|
-
log 's3_key instance_variable = ' + self.s3_key.to_s
|
15
|
-
|
16
|
-
@times.times do |i|
|
17
|
-
log 'running at ' + i.to_s
|
18
|
-
sleep 1
|
19
|
-
set_progress(:percent=> (i / @times * 100))
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def set_complete(params=nil)
|
24
|
-
log 'SET COMPLETE YAY!' + params[:task_set_id]
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
|
data/test/test_worker_2.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
begin
|
3
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
4
|
-
rescue Exception => ex
|
5
|
-
puts ex.message
|
6
|
-
require 'simple_worker'
|
7
|
-
end
|
8
|
-
=end
|
9
|
-
|
10
|
-
# Bump for new checksum.sdf adsfjlaksdjf dasfasdfadsf
|
11
|
-
class TestWorker2 < SimpleWorker::Base
|
12
|
-
|
13
|
-
merge File.join(File.dirname(__FILE__), 'models', 'model_1.rb')
|
14
|
-
unmerge 'models/model_2.rb'
|
15
|
-
merge_worker File.join(File.dirname(__FILE__), 'second_worker.rb'), 'SecondWorker'
|
16
|
-
|
17
|
-
attr_accessor :s3_key, :times, :x
|
18
|
-
|
19
|
-
|
20
|
-
#TEST dsd
|
21
|
-
def who_am_i2?
|
22
|
-
return self.class.name
|
23
|
-
end
|
24
|
-
|
25
|
-
def run
|
26
|
-
log 'running the runner for leroy '.upcase + ' with data: '
|
27
|
-
|
28
|
-
log 's3_key instance_variable = ' + self.s3_key
|
29
|
-
times.times do |i|
|
30
|
-
log 'running at ' + i.to_s
|
31
|
-
sleep 1
|
32
|
-
set_progress(:percent=> (i / times * 100))
|
33
|
-
end
|
34
|
-
m1 = Model1.new
|
35
|
-
log "I made a new model1"
|
36
|
-
m1.say_hello
|
37
|
-
|
38
|
-
second_workers = []
|
39
|
-
now = Time.now
|
40
|
-
10.times do |i|
|
41
|
-
second_worker = SecondWorker.new
|
42
|
-
second_worker.start_time = now
|
43
|
-
second_worker.num = i
|
44
|
-
second_worker.queue
|
45
|
-
second_workers << second_worker
|
46
|
-
end
|
47
|
-
|
48
|
-
10.times do |i|
|
49
|
-
second_workers.each do |sw|
|
50
|
-
puts sw.to_s
|
51
|
-
puts sw.status["status"].to_s
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def set_complete(params=nil)
|
57
|
-
log 'SET COMPLETE YAY!' + params[:task_set_id]
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
data/test/test_worker_3.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
begin
|
3
|
-
require File.join(File.dirname(__FILE__), '../lib/simple_worker')
|
4
|
-
rescue Exception => ex
|
5
|
-
puts ex.message
|
6
|
-
require 'simple_worker'
|
7
|
-
end
|
8
|
-
=end
|
9
|
-
require_relative 'test_worker_2'
|
10
|
-
|
11
|
-
class TestWorker3 < TestWorker2
|
12
|
-
|
13
|
-
|
14
|
-
attr_accessor :x, :db_user, :db_pass
|
15
|
-
|
16
|
-
def run()
|
17
|
-
puts 'TestWorker3.run'
|
18
|
-
@x = 123
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
data/test/trace_object.rb
DELETED
data/test/zip_vs_gzip.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'zip'
|
2
|
-
require 'zlib'
|
3
|
-
|
4
|
-
dir = Dir.new("./")
|
5
|
-
started_at = Time.now
|
6
|
-
fname2 = "zipped.zip"
|
7
|
-
Zip::ZipFile.open(fname2, 'w') do |f|
|
8
|
-
dir.each do |fname|
|
9
|
-
puts "merging #{fname} into #{fname2}"
|
10
|
-
f.add(File.basename(fname), fname)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
ended_at = Time.now
|
14
|
-
puts "zip duration=#{(ended_at.to_f - started_at.to_f)}"
|
15
|
-
|
16
|
-
# todo: need to tar these first.
|
17
|
-
started_at = Time.now
|
18
|
-
fname2 = "gzipped.gzip"
|
19
|
-
Zlib::GzipWriter.open(fname2) do |gz|
|
20
|
-
dir.each do |fname|
|
21
|
-
puts "merging #{fname} into #{fname2}"
|
22
|
-
gz.write(File.basename(fname), fname)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
ended_at = Time.now
|
26
|
-
puts "gzip duration=#{(ended_at.to_f - started_at.to_f)}"
|