simple_worker 0.3.19 → 0.3.20

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -45,10 +45,12 @@ Let's say someone does something in your app and you want to send an email about
45
45
  worker.to = current_user.email
46
46
  worker.subject = "Here is your mail!"
47
47
  worker.body = "This is the body"
48
- **worker.run**
48
+ worker.run_local
49
49
 
50
- Queue up your Worker
51
- --------------------
50
+ Once you've got it working locally, the next step is to run it on the SimpleWorker cloud.
51
+
52
+ Queue up your Worker on the SimpleWorker Cloud
53
+ ----------------------------------------------
52
54
 
53
55
  Let's say someone does something in your app and you want to send an email about it.
54
56
 
@@ -56,7 +58,9 @@ Let's say someone does something in your app and you want to send an email about
56
58
  worker.to = current_user.email
57
59
  worker.subject = "Here is your mail!"
58
60
  worker.body = "This is the body"
59
- **worker.queue**
61
+ worker.queue
62
+
63
+ This will send it off to the SimpleWorker cloud.
60
64
 
61
65
  Schedule your Worker
62
66
  --------------------
@@ -68,7 +72,7 @@ action in your application. This is almost the same as queuing your worker.
68
72
  worker.to = current_user.email
69
73
  worker.subject = "Here is your mail!"
70
74
  worker.body = "This is the body"
71
- **worker.schedule(:start_at=>1.hours.since)**
75
+ worker.schedule(:start_at=>1.hours.since)
72
76
 
73
77
  Check Status
74
78
  ------------
@@ -79,7 +83,7 @@ If you still have access to the worker object, just call:
79
83
 
80
84
  If you only have the job ID, call:
81
85
 
82
- SimpleWorker.status(job_id)
86
+ SimpleWorker.service.status(job_id)
83
87
 
84
88
  This will return a hash like:
85
89
 
@@ -91,22 +95,27 @@ This will return a hash like:
91
95
  "duration"=>nil,
92
96
  "progress"=>{"percent"=>25}}
93
97
 
94
- TODO: How to access log.
95
98
 
96
99
  Logging
97
100
  -------
98
101
 
102
+ In your worker, just call the log method with the string you want logged:
103
+
99
104
  log "Starting to do something..."
100
105
 
101
- The log will be available for viewing via the SimpleWorker UI or via log in the API.
106
+ The log will be available for viewing via the SimpleWorker UI or via log in the API:
107
+
108
+ SimpleWorker.service.log(job_id)
102
109
 
103
110
  Setting Progress
104
111
  ----------------
105
112
 
106
- set_progress(:percent => 25, :message => "We are a quarter of the way there!")
113
+ This is just a way to let your users know where the job is at if required.
107
114
 
108
- You can actually put anything in this hash and it will be returned with a call to status.
115
+ set_progress(:percent => 25, :message => "We are a quarter of the way there!")
109
116
 
117
+ You can actually put anything in this hash and it will be returned with a call to status. We recommend using
118
+ the format above for consistency and to get some additional features where we look for these values.
110
119
 
111
120
  Schedule a Recurring Job - CRON
112
121
  ------------------------------
@@ -178,6 +187,9 @@ Or simpler yet, try using relative paths:
178
187
  merge "../app/models/user"
179
188
  merge "../app/models/account.rb"
180
189
 
190
+ The opposite can be done as well with "unmerge" and can be useful when using Rails to exclude classes that are automatically
191
+ merged.
192
+
181
193
 
182
194
  Bringing in other Workers
183
195
  ---------------------
data/lib/railtie.rb CHANGED
@@ -5,7 +5,7 @@ require 'rails'
5
5
 
6
6
  module SimpleWorker
7
7
  class Railtie < Rails::Railtie
8
- railtie_name :simple_worker
8
+ # railtie_name :simple_worker deprecated
9
9
 
10
10
  initializer "simple_worker.configure_rails_initialization" do |app|
11
11
  puts 'railtie'
data/lib/simple_worker.rb CHANGED
@@ -17,8 +17,12 @@ module SimpleWorker
17
17
  yield(config)
18
18
  SimpleWorker.service = Service.new(config.access_key, config.secret_key, :config=>config)
19
19
  end
20
+
21
+
20
22
  end
21
23
 
24
+
25
+
22
26
  end
23
27
 
24
28
  if defined?(Rails)
@@ -12,10 +12,12 @@ module SimpleWorker
12
12
  attr_accessor :subclass, :caller_file
13
13
  @merged = []
14
14
  @merged_workers = []
15
+ @unmerged = []
15
16
 
16
17
  def reset!
17
18
  @merged = []
18
19
  @merged_workers = []
20
+ @unmerged = []
19
21
  end
20
22
 
21
23
  def inherited(subclass)
@@ -35,30 +37,47 @@ module SimpleWorker
35
37
  super
36
38
  end
37
39
 
40
+ def check_for_file(f)
41
+ f = f.to_str
42
+ unless ends_with?(f, ".rb")
43
+ f << ".rb"
44
+ end
45
+ exists = false
46
+ if File.exist? f
47
+ exists = true
48
+ else
49
+ # try relative
50
+ # p caller
51
+ f2 = File.join(File.dirname(caller[3]), f)
52
+ puts 'f2=' + f2
53
+ if File.exist? f2
54
+ exists = true
55
+ f = f2
56
+ end
57
+ end
58
+ unless exists
59
+ raise "File not found: " + f
60
+ end
61
+ f = File.expand_path(f)
62
+ require f
63
+ f
64
+ end
65
+
38
66
  # merges the specified files.
39
67
  # todo: don't allow multiple files per merge, just one like require
40
68
  def merge(*files)
41
69
  files.each do |f|
42
- f = f.to_str
43
- unless ends_with?(f, ".rb")
44
- f << ".rb"
45
- end
46
- exists = false
47
- if File.exist? f
48
- exists = true
49
- else
50
- # try relative
51
- f2 = File.join(File.dirname(caller[0]), f)
52
- if File.exist? f2
53
- exists = true
54
- f = f2
55
- end
56
- end
57
- unless exists
58
- raise "File not found: " + f
59
- end
60
- require f
61
- @merged << File.expand_path(f)
70
+ f = check_for_file(f)
71
+ @merged << f
72
+ end
73
+ end
74
+
75
+ # Opposite of merge, this will omit the files you specify from being merged in. Useful in Rails apps
76
+ # where a lot of things are auto-merged by default like your models.
77
+ def unmerge(*files)
78
+ files.each do |f|
79
+ f = check_for_file(f)
80
+ @unmerged << f
62
81
  end
63
82
  end
64
83
 
@@ -80,7 +99,7 @@ module SimpleWorker
80
99
  end
81
100
 
82
101
  def user_dir
83
- "."
102
+ "./"
84
103
  end
85
104
 
86
105
  def set_progress(hash)
@@ -189,37 +208,40 @@ module SimpleWorker
189
208
  puts 'upload_if_needed ' + self.class.name
190
209
  # Todo, watch for this file changing or something so we can reupload
191
210
  unless uploaded?
192
- merged = self.class.instance_variable_get(:@merged)
193
- puts 'merged1=' + merged.inspect
194
-
195
- subclass = self.class
196
- rfile = subclass.instance_variable_get(:@caller_file) # Base.caller_file # File.expand_path(Base.subclass)
197
- puts 'subclass file=' + rfile.inspect
198
- puts 'subclass.name=' + subclass.name
211
+ merged = self.class.instance_variable_get(:@merged)
212
+ unmerged = self.class.instance_variable_get(:@unmerged)
213
+ # puts 'merged1=' + merged.inspect
214
+
215
+ subclass = self.class
216
+ rfile = subclass.instance_variable_get(:@caller_file) # Base.caller_file # File.expand_path(Base.subclass)
217
+ # puts 'subclass file=' + rfile.inspect
218
+ # puts 'subclass.name=' + subclass.name
199
219
  superclass = subclass
200
220
  # Also get merged from subclasses up to SimpleWorker::Base
201
221
  while (superclass = superclass.superclass)
202
- puts 'superclass=' + superclass.name
222
+ # puts 'superclass=' + superclass.name
203
223
  break if superclass.name == SimpleWorker::Base.name
204
224
  super_merged = superclass.instance_variable_get(:@merged)
205
225
  # puts 'merging caller file: ' + superclass.instance_variable_get(:@caller_file).inspect
206
226
  super_merged << superclass.instance_variable_get(:@caller_file)
207
227
  merged = super_merged + merged
208
- puts 'merged with superclass=' + merged.inspect
228
+ # puts 'merged with superclass=' + merged.inspect
209
229
  end
210
230
  merged += SimpleWorker.config.models if SimpleWorker.config.models
211
- SimpleWorker.service.upload(rfile, subclass.name, :merge=>merged)
231
+ SimpleWorker.service.upload(rfile, subclass.name, :merge=>merged, :unmerge=>unmerged)
212
232
  self.class.instance_variable_set(:@uploaded, true)
213
233
  else
214
234
  puts 'already uploaded for ' + self.class.name
215
235
  end
216
236
  merged_workers = self.class.instance_variable_get(:@merged_workers)
217
- puts 'now uploading merged WORKERS ' + merged_workers.inspect
218
- merged_workers.each do |mw|
219
- # to support merges in the secondary worker, we should instantiate it here, then call "upload"
220
- puts 'instantiating and uploading ' + mw[1]
221
- Kernel.const_get(mw[1]).new.upload
237
+ if merged_workers.size > 0
238
+ puts 'now uploading merged workers ' + merged_workers.inspect
239
+ merged_workers.each do |mw|
240
+ # to support merges in the secondary worker, we should instantiate it here, then call "upload"
241
+ puts 'instantiating and uploading ' + mw[1]
242
+ Kernel.const_get(mw[1]).new.upload
222
243
  # SimpleWorker.service.upload(mw[0], mw[1])
244
+ end
223
245
  end
224
246
 
225
247
  after_upload
@@ -231,7 +253,7 @@ module SimpleWorker
231
253
  data[iv] = instance_variable_get(iv)
232
254
  end
233
255
 
234
- config_data = SimpleWorker.config.get_atts_to_send
256
+ config_data = SimpleWorker.config.get_atts_to_send
235
257
  data[:sw_config] = config_data
236
258
  return data
237
259
  end
@@ -25,9 +25,9 @@ module SimpleWorker
25
25
 
26
26
  def get_atts_to_send
27
27
  config_data = {}
28
- config_data['database'] = database if database
29
- config_data['global_attributes'] = global_attributes if global_attributes
30
- config_data['host'] = host if host
28
+ config_data['database'] = self.database if self.database
29
+ config_data['global_attributes'] = self.global_attributes if self.global_attributes
30
+ config_data['host'] = self.host if self.host
31
31
  config_data
32
32
  end
33
33
 
@@ -27,7 +27,7 @@ module SimpleWorker
27
27
  existing_md5 = IO.read(f)
28
28
  end
29
29
 
30
- filename = build_merged_file(filename, options[:merge]) if options[:merge]
30
+ filename = build_merged_file(filename, options[:merge], options[:unmerge]) if options[:merge]
31
31
 
32
32
  # sys.classes[subclass].__file__
33
33
  # puts '__FILE__=' + Base.subclass.__file__.to_s
@@ -56,10 +56,20 @@ module SimpleWorker
56
56
  end
57
57
  end
58
58
 
59
- def build_merged_file(filename, merge)
59
+ def build_merged_file(filename, merge, unmerge)
60
60
  merge = merge.dup
61
61
  merge << filename
62
+ #puts "merge before uniq! " + merge.inspect
62
63
  merge.uniq!
64
+ # puts "merge after uniq! " + merge.inspect
65
+
66
+ if unmerge
67
+ unmerge.each do |x|
68
+ deleted = merge.delete x
69
+ puts "Unmerging #{x}. Success? #{deleted}"
70
+ end
71
+ end
72
+
63
73
  fname2 = File.join(Dir.tmpdir(), File.basename(filename))
64
74
  # puts 'fname2=' + fname2
65
75
  # puts 'merged_file_array=' + merge.inspect
@@ -0,0 +1,22 @@
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
@@ -9,6 +9,7 @@ end
9
9
  class TestWorker2 < SimpleWorker::Base
10
10
 
11
11
  merge File.join(File.dirname(__FILE__), 'models', 'model_1.rb')
12
+ unmerge 'models/model_2.rb'
12
13
  merge_worker File.join(File.dirname(__FILE__), 'second_worker.rb'), 'SecondWorker'
13
14
 
14
15
  attr_accessor :s3_key, :times, :x
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 19
9
- version: 0.3.19
8
+ - 20
9
+ version: 0.3.20
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: 2010-12-30 00:00:00 -08:00
17
+ date: 2011-01-07 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -49,6 +49,7 @@ files:
49
49
  - rails/init.rb
50
50
  - README.markdown
51
51
  - test/models/model_1.rb
52
+ - test/models/model_2.rb
52
53
  - test/requiring_worker.rb
53
54
  - test/scheduled_worker.rb
54
55
  - test/second_worker.rb
@@ -92,6 +93,7 @@ specification_version: 3
92
93
  summary: Classified
93
94
  test_files:
94
95
  - test/models/model_1.rb
96
+ - test/models/model_2.rb
95
97
  - test/requiring_worker.rb
96
98
  - test/scheduled_worker.rb
97
99
  - test/second_worker.rb