simple_worker 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -123,6 +123,10 @@ The log will be available for viewing via the SimpleWorker UI or via log in the
123
123
 
124
124
  SimpleWorker.service.log(job_id)
125
125
 
126
+ or if you still have a handle to your worker object:
127
+
128
+ worker.get_log
129
+
126
130
  Setting Progress
127
131
  ----------------
128
132
 
@@ -218,6 +222,16 @@ uploaded separately and treated as distinctly separate workers.
218
222
 
219
223
  merge_worker "./other_worker.rb", "OtherWorker"
220
224
 
225
+ Merging Gems
226
+ ---------------------
227
+
228
+ This allows you to use any gem you'd like with SimpleWorker.
229
+
230
+ merge_gem "some_gem"
231
+ merge_gem "some_gem_with_version", "1.2.3"
232
+
233
+ [Check here for more info on merge_gem](http://support.simpleworker.com/kb/working-with-simpleworker/merging-gems-into-your-worker).
234
+
221
235
 
222
236
  Configuration Options
223
237
  ---------------------
@@ -31,7 +31,7 @@ module SimpleWorker
31
31
  # caller_file = splits[0] + ":" + splits[1]
32
32
  caller_file = caller[0][0...(caller[0].index(":in"))]
33
33
  caller_file = caller_file[0...(caller_file.rindex(":"))]
34
- # puts 'caller_file=' + caller_file
34
+ # puts 'caller_file=' + caller_file
35
35
  # don't need these class_variables anymore probably
36
36
  subclass.instance_variable_set(:@caller_file, caller_file)
37
37
 
@@ -189,6 +189,25 @@ module SimpleWorker
189
189
  SimpleWorker.service.status(task_id)
190
190
  end
191
191
 
192
+ # will return after job has completed or errored out.
193
+ # Returns status.
194
+ # todo: add a :timeout option
195
+ def wait_until_complete
196
+ tries = 0
197
+ status = nil
198
+ sleep 1
199
+ while tries < 100
200
+ status = self.status
201
+ puts "Waiting... status=" + status["status"]
202
+ if status["status"] != "queued" && status["status"] != "running"
203
+ break
204
+ end
205
+ sleep 2
206
+ end
207
+ status
208
+ end
209
+
210
+
192
211
  def upload
193
212
  upload_if_needed
194
213
  end
@@ -217,6 +236,7 @@ module SimpleWorker
217
236
  SimpleWorker.service.schedule_status(schedule_id)
218
237
  end
219
238
 
239
+ # Retrieves the log for this worker from the SimpleWorker service.
220
240
  def get_log
221
241
  SimpleWorker.service.log(task_id)
222
242
  end
@@ -295,6 +315,7 @@ module SimpleWorker
295
315
  payload[iv] = instance_variable_get(iv)
296
316
  end
297
317
  data[:attr_encoded] = Base64.encode64(payload.to_json)
318
+ data[:file_name] = File.basename(self.class.instance_variable_get(:@caller_file))
298
319
 
299
320
  config_data = SimpleWorker.config.get_atts_to_send
300
321
  data[:sw_config] = config_data
@@ -4,7 +4,7 @@ require 'appoxy_api'
4
4
  require 'zip'
5
5
  module SimpleWorker
6
6
 
7
- @@logger = Logger.new(STDOUT)
7
+ @@logger = Logger.new(STDOUT)
8
8
  @@logger.level = Logger::INFO
9
9
 
10
10
  def self.logger
@@ -32,15 +32,15 @@ module SimpleWorker
32
32
  def upload(filename, class_name, options={})
33
33
  # puts "Uploading #{class_name}"
34
34
  # check whether it should upload again
35
- tmp = Dir.tmpdir()
36
- md5file = "simple_worker_#{class_name.gsub("::", ".")}_#{access_key[0, 8]}.md5"
35
+ tmp = Dir.tmpdir()
36
+ md5file = "simple_worker_#{class_name.gsub("::", ".")}_#{access_key[0, 8]}.md5"
37
37
  existing_md5 = nil
38
- f = File.join(tmp, md5file)
38
+ f = File.join(tmp, md5file)
39
39
  if File.exists?(f)
40
40
  existing_md5 = IO.read(f)
41
41
  end
42
42
  # Check for code changes.
43
- md5 = Digest::MD5.hexdigest(File.read(filename))
43
+ md5 = Digest::MD5.hexdigest(File.read(filename))
44
44
  new_code = false
45
45
  if md5 != existing_md5
46
46
  SimpleWorker.logger.info "Uploading #{class_name}, code modified."
@@ -52,14 +52,13 @@ module SimpleWorker
52
52
  end
53
53
 
54
54
 
55
- filename = build_merged_file(filename, options[:merge], options[:unmerge], options[:merged_gems])
55
+ zip_filename = build_merged_file(filename, options[:merge], options[:unmerge], options[:merged_gems])
56
56
 
57
57
  # sys.classes[subclass].__file__
58
58
  # puts '__FILE__=' + Base.subclass.__file__.to_s
59
59
  # puts "new md5=" + md5
60
60
 
61
61
 
62
-
63
62
  if new_code
64
63
  # mystring = nil
65
64
  # file = File.open(filename, "r") do |f|
@@ -67,8 +66,12 @@ module SimpleWorker
67
66
  # end
68
67
  # mystring = Base64.encode64(mystring)
69
68
  # puts 'code=' + mystring
70
- options = {"class_name"=>class_name, }
71
- ret = post_file("code/put", File.new(filename), options)
69
+ options = {
70
+ "class_name"=>class_name,
71
+ "file_name"=> File.basename(filename)
72
+ }
73
+ puts 'options for upload=' + options.inspect
74
+ ret = post_file("code/put", File.new(zip_filename), options)
72
75
  ret
73
76
  end
74
77
  end
@@ -77,7 +80,7 @@ module SimpleWorker
77
80
  gem_name =(full_gem_name.match(/^[a-zA-Z0-9\-_]+/)[0])
78
81
  puts "Searching #{gem_name}"
79
82
  searcher = Gem::GemPathSearcher.new
80
- gems = searcher.find_all(gem_name)
83
+ gems = searcher.find_all(gem_name)
81
84
  gems = gems.select { |g| g.version.version==version } if version
82
85
  if !gems.empty?
83
86
  gem = gems.first
@@ -149,7 +152,7 @@ module SimpleWorker
149
152
  # todo: remove secret key?? Can use worker service from within a worker without it now
150
153
  hash_to_send["sw_access_key"] = self.access_key
151
154
  hash_to_send["sw_secret_key"] = self.secret_key
152
- hash_to_send["api_version"] = SimpleWorker.api_version
155
+ hash_to_send["api_version"] = SimpleWorker.api_version
153
156
  end
154
157
 
155
158
  def check_config
@@ -167,8 +170,8 @@ module SimpleWorker
167
170
  data = [data]
168
171
  end
169
172
  # p data
170
- hash_to_send = {}
171
- hash_to_send["payload"] = data
173
+ hash_to_send = {}
174
+ hash_to_send["payload"] = data
172
175
  hash_to_send["class_name"] = class_name
173
176
  hash_to_send["priority"] = options[:priority] if options[:priority]
174
177
  hash_to_send["options"] = options
@@ -182,15 +185,14 @@ module SimpleWorker
182
185
  end
183
186
 
184
187
  def queue_raw(class_name, data={})
185
- params = nil
186
- hash_to_send = data
188
+ params = nil
189
+ hash_to_send = data
187
190
  hash_to_send["class_name"] = class_name
188
- ret = post("queue/add", hash_to_send)
191
+ ret = post("queue/add", hash_to_send)
189
192
  ret
190
193
 
191
194
  end
192
195
 
193
-
194
196
  #
195
197
  # schedule: hash of scheduling options that can include:
196
198
  # Required:
@@ -207,10 +209,10 @@ module SimpleWorker
207
209
  # if !data.is_a?(Array)
208
210
  # data = [data]
209
211
  # end
210
- hash_to_send = {}
211
- hash_to_send["payload"] = data
212
+ hash_to_send = {}
213
+ hash_to_send["payload"] = data
212
214
  hash_to_send["class_name"] = class_name
213
- hash_to_send["schedule"] = schedule
215
+ hash_to_send["schedule"] = schedule
214
216
  add_sw_params(hash_to_send)
215
217
  # puts ' about to send ' + hash_to_send.inspect
216
218
  ret = post("scheduler/schedule", hash_to_send)
@@ -219,33 +221,33 @@ module SimpleWorker
219
221
 
220
222
  def cancel_schedule(scheduled_task_id)
221
223
  raise "Must include a schedule id." if scheduled_task_id.blank?
222
- hash_to_send = {}
224
+ hash_to_send = {}
223
225
  hash_to_send["scheduled_task_id"] = scheduled_task_id
224
- ret = post("scheduler/cancel", hash_to_send)
226
+ ret = post("scheduler/cancel", hash_to_send)
225
227
  ret
226
228
  end
227
229
 
228
230
  def get_schedules()
229
231
  hash_to_send = {}
230
- ret = get("scheduler/list", hash_to_send)
232
+ ret = get("scheduler/list", hash_to_send)
231
233
  ret
232
234
  end
233
235
 
234
236
  def status(task_id)
235
237
  data = {"task_id"=>task_id}
236
- ret = get("task/status", data)
238
+ ret = get("task/status", data)
237
239
  ret
238
240
  end
239
241
 
240
242
  def schedule_status(schedule_id)
241
243
  data = {"schedule_id"=>schedule_id}
242
- ret = get("scheduler/status", data)
244
+ ret = get("scheduler/status", data)
243
245
  ret
244
246
  end
245
247
 
246
248
  def log(task_id)
247
249
  data = {"task_id"=>task_id}
248
- ret = get("task/log", data, {:parse=>false})
250
+ ret = get("task/log", data, {:parse=>false})
249
251
  # puts ' ret=' + ret.inspect
250
252
  # ret["log"] = Base64.decode64(ret["log"])
251
253
  ret
data/test/awesome_job.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class AwesomeJob < SimpleWorker::Base
2
- merge_gem 'dropbox'
2
+ merge_gem 'dropbox' # , '1.2.3'
3
3
  # bumpdsfsdfdsfasdf
4
4
 
5
5
  def run
@@ -1,4 +1,4 @@
1
- require 'test_base'
1
+ require_relative 'test_base'
2
2
 
3
3
  class TestInheritance < TestBase
4
4
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 5
9
- version: 0.5.5
8
+ - 6
9
+ version: 0.5.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Travis Reeder
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-03-27 00:00:00 -07:00
17
+ date: 2011-03-30 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency