sweatshop 1.4.0 → 1.5.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 CHANGED
@@ -1,20 +1,20 @@
1
- # SweatShop
1
+ # Sweatshop
2
2
 
3
- SweatShop provides an api to background resource intensive tasks. Much of the api design was copied from Workling, with a few tweaks.
3
+ Sweatshop provides an api to background resource intensive tasks. Much of the api design was copied from Workling, with a few tweaks.
4
4
  Currently, it runs rabbitmq and kestrel, but it can support any number of queues.
5
5
 
6
6
  ## Installing
7
7
 
8
- gem install sweat_shop
9
- freeze in your gems directory (add config.gem 'sweat_shop' to your environment)
10
- cd vendor/gems/sweat_shop
8
+ gem install sweatshop
9
+ freeze in your gems directory (add config.gem 'sweatshop' to your environment)
10
+ cd vendor/gems/sweatshop
11
11
  rake setup
12
12
 
13
13
  ## Writing workers
14
14
 
15
- Put `email_worker.rb` into app/workers and sublcass `SweatShop::Worker`:
15
+ Put `email_worker.rb` into app/workers and sublcass `Sweatshop::Worker`:
16
16
 
17
- class EmailWorker < SweatShop::Worker
17
+ class EmailWorker < Sweatshop::Worker
18
18
  def send_mail(to)
19
19
  user = User.find_by_id(to)
20
20
  Mailer.deliver_welcome(to)
@@ -36,7 +36,7 @@ queues.
36
36
 
37
37
  ## Running the queue
38
38
 
39
- SweatShop has been tested with Rabbit and Kestrel, but it will also work with Starling. Please use the following resources to install the server:
39
+ Sweatshop has been tested with Rabbit and Kestrel, but it will also work with Starling. Please use the following resources to install the server:
40
40
 
41
41
  Kestrel:
42
42
  http://github.com/robey/kestrel/tree/master
@@ -91,7 +91,7 @@ By default, the script will run all workers defined in the app/workers dir. Ever
91
91
  script/sweatshop -d
92
92
  script/sweatshop -d stop
93
93
 
94
- If you would like to run SweatShop as a daemon on a linux machine, use the initd.sh script provided in the sweat_shop/script dir.
94
+ If you would like to run Sweatshop as a daemon on a linux machine, use the initd.sh script provided in the sweatshop/script dir.
95
95
 
96
96
  # REQUIREMENTS
97
97
 
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :patch: 0
3
3
  :major: 1
4
- :minor: 4
4
+ :minor: 5
data/bin/sweatd CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require File.dirname(__FILE__) + '/../lib/sweat_shop/sweatd'
3
+ require File.dirname(__FILE__) + '/../lib/sweatshop/sweatd'
@@ -5,13 +5,8 @@ module MessageQueue
5
5
  def enqueue(queue, data); end
6
6
  def dequeue(queue); end
7
7
  def confirm(queue); end
8
- def subscribe(queue); end
9
8
  def delete(queue); end
10
9
  def client; end
11
10
  def stop; end
12
-
13
- def subscribe?
14
- false
15
- end
16
11
  end
17
12
  end
@@ -6,9 +6,9 @@ $:.unshift(File.dirname(__FILE__))
6
6
  require 'message_queue/base'
7
7
  require 'message_queue/rabbit'
8
8
  require 'message_queue/kestrel'
9
- require 'sweat_shop/worker'
9
+ require 'sweatshop/worker'
10
10
 
11
- module SweatShop
11
+ module Sweatshop
12
12
  extend self
13
13
 
14
14
  def workers
@@ -31,30 +31,22 @@ module SweatShop
31
31
  end
32
32
 
33
33
  def do_tasks(workers)
34
- if queue.subscribe?
35
- EM.run do
36
- workers.each do |worker|
37
- worker.subscribe
34
+ loop do
35
+ wait = true
36
+ workers.each do |worker|
37
+ if task = worker.dequeue
38
+ worker.do_task(task)
39
+ wait = false
38
40
  end
39
41
  end
40
- else
41
- loop do
42
- wait = true
42
+ if stop?
43
43
  workers.each do |worker|
44
- if task = worker.dequeue
45
- worker.do_task(task)
46
- wait = false
47
- end
48
- end
49
- if stop?
50
- workers.each do |worker|
51
- worker.stop
52
- end
53
- queue.stop
54
- exit
44
+ worker.stop
55
45
  end
56
- sleep 1 if wait
46
+ queue.stop
47
+ exit
57
48
  end
49
+ sleep 1 if wait
58
50
  end
59
51
  end
60
52
 
@@ -89,7 +81,7 @@ module SweatShop
89
81
 
90
82
  def stop
91
83
  @stop = true
92
- queue.stop if queue.subscribe?
84
+ queue.stop
93
85
  end
94
86
 
95
87
  def stop?
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/daemoned'
2
2
 
3
- module SweatShop
3
+ module Sweatshop
4
4
  class Sweatd
5
5
  include Daemoned
6
6
  queues = []
@@ -30,12 +30,12 @@ module SweatShop
30
30
 
31
31
  sig(:term, :int) do
32
32
  puts "Shutting down sweatd..."
33
- SweatShop.stop
33
+ Sweatshop.stop
34
34
  end
35
35
 
36
36
  sig(:hup) do
37
37
  puts "Received HUP"
38
- SweatShop.stop
38
+ Sweatshop.stop
39
39
  remove_pid!
40
40
  puts "Restarting sweatd with #{start_cmd}..."
41
41
  `#{start_cmd}`
@@ -46,14 +46,14 @@ module SweatShop
46
46
  puts "Loading Rails..."
47
47
  require rails_root + '/config/environment'
48
48
  end
49
- require File.dirname(__FILE__) + '/../sweat_shop'
49
+ require File.dirname(__FILE__) + '/../sweatshop'
50
50
  end
51
51
 
52
52
  daemonize(:kill_timeout => 20) do
53
53
  workers = []
54
54
 
55
55
  if groups.any?
56
- workers += SweatShop.workers_in_group(groups)
56
+ workers += Sweatshop.workers_in_group(groups)
57
57
  end
58
58
 
59
59
  if queues.any?
@@ -64,11 +64,11 @@ module SweatShop
64
64
  worker_str = workers.join(',')
65
65
  puts "Starting #{worker_str}..."
66
66
  $0 = "Sweatd: #{worker_str}"
67
- SweatShop.do_tasks(workers)
67
+ Sweatshop.do_tasks(workers)
68
68
  else
69
69
  puts "Starting all workers..."
70
70
  $0 = 'Sweatd: all'
71
- SweatShop.do_all_tasks
71
+ Sweatshop.do_all_tasks
72
72
  end
73
73
  end
74
74
 
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/metaid'
2
2
 
3
- module SweatShop
3
+ module Sweatshop
4
4
  class Worker
5
5
  def self.inherited(subclass)
6
6
  self.workers << subclass
@@ -34,7 +34,7 @@ module SweatShop
34
34
  end
35
35
 
36
36
  def self.config
37
- SweatShop.config
37
+ Sweatshop.config
38
38
  end
39
39
 
40
40
  def self.queue_name
@@ -61,12 +61,6 @@ module SweatShop
61
61
  queue.confirm(queue_name)
62
62
  end
63
63
 
64
- def self.subscribe
65
- queue.subscribe(queue_name) do |task|
66
- do_task(task)
67
- end
68
- end
69
-
70
64
  def self.do_tasks
71
65
  while task = dequeue
72
66
  do_task(task)
@@ -92,19 +86,19 @@ module SweatShop
92
86
  end
93
87
 
94
88
  def self.queue
95
- SweatShop.queue(queue_group.to_s)
89
+ Sweatshop.queue(queue_group.to_s)
96
90
  end
97
91
 
98
92
  def self.workers
99
- SweatShop.workers
93
+ Sweatshop.workers
100
94
  end
101
95
 
102
96
  def self.config
103
- SweatShop.config
97
+ Sweatshop.config
104
98
  end
105
99
 
106
100
  def self.log(msg)
107
- SweatShop.log(msg)
101
+ Sweatshop.log(msg)
108
102
  end
109
103
 
110
104
  def self.call_before_task(task)
data/script/sweatshop CHANGED
@@ -7,11 +7,11 @@ if ARGV.include?('-d')
7
7
  root = File.expand_path(File.dirname(__FILE__) + '/..')
8
8
  ARGV << "--rails=#{root}"
9
9
 
10
- system("ruby #{root}/vendor/gems/sweat_shop/lib/sweat_shop/sweatd.rb #{ARGV.join(' ')}")
10
+ system("ruby #{root}/vendor/gems/sweatshop/lib/sweatshop/sweatd.rb #{ARGV.join(' ')}")
11
11
  exit $?.exitstatus
12
12
  else
13
13
  puts "Loading Rails..."
14
14
  require File.dirname(__FILE__) + '/../config/environment'
15
15
  puts "Listening for new tasks..."
16
- SweatShop.do_all_tasks
16
+ Sweatshop.do_all_tasks
17
17
  end
data/test/hello_worker.rb CHANGED
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../lib/sweat_shop'
2
- class HelloWorker < SweatShop::Worker
1
+ require File.dirname(__FILE__) + '/../lib/sweatshop'
2
+ class HelloWorker < Sweatshop::Worker
3
3
  TEST_FILE = File.dirname(__FILE__) + '/test.txt' unless defined?(TEST_FILE)
4
4
 
5
5
  def hello(name)
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../lib/sweat_shop'
1
+ require File.dirname(__FILE__) + '/../lib/sweatshop'
2
2
  require File.dirname(__FILE__) + '/test_helper'
3
3
  require File.dirname(__FILE__) + '/hello_worker'
4
4
 
@@ -9,20 +9,20 @@ class WorkerTest < Test::Unit::TestCase
9
9
  end
10
10
 
11
11
  def teardown
12
- SweatShop.instance_variable_set("@config", nil)
13
- SweatShop.instance_variable_set("@queues", nil)
12
+ Sweatshop.instance_variable_set("@config", nil)
13
+ Sweatshop.instance_variable_set("@queues", nil)
14
14
  File.delete(HelloWorker::TEST_FILE) if File.exist?(HelloWorker::TEST_FILE)
15
15
  end
16
16
 
17
17
  should "daemonize" do
18
18
  begin
19
- SweatShop.config['enable'] = true
20
- SweatShop.logger = :silent
19
+ Sweatshop.config['enable'] = true
20
+ Sweatshop.logger = :silent
21
21
 
22
22
  HelloWorker.async_hello('Amos')
23
23
 
24
24
  worker = File.expand_path(File.dirname(__FILE__) + '/hello_worker')
25
- sweatd = "#{File.dirname(__FILE__)}/../lib/sweat_shop/sweatd.rb"
25
+ sweatd = "#{File.dirname(__FILE__)}/../lib/sweatshop/sweatd.rb"
26
26
 
27
27
  `ruby #{sweatd} --worker-file #{worker} start`
28
28
  `ruby #{sweatd} stop`
@@ -39,9 +39,9 @@ class WorkerTest < Test::Unit::TestCase
39
39
 
40
40
  should "connect to fallback servers if the default one is down" do
41
41
  begin
42
- SweatShop.logger = :silent
43
- SweatShop.config['enable'] = true
44
- SweatShop.config['default']['cluster'] =
42
+ Sweatshop.logger = :silent
43
+ Sweatshop.config['enable'] = true
44
+ Sweatshop.config['default']['cluster'] =
45
45
  [
46
46
  'localhost:5671', # invalid
47
47
  'localhost:5672' # valid
@@ -53,7 +53,7 @@ class WorkerTest < Test::Unit::TestCase
53
53
  HelloWorker.queue.client = nil
54
54
 
55
55
  HelloWorker.stop
56
- SweatShop.config['default']['cluster'] =
56
+ Sweatshop.config['default']['cluster'] =
57
57
  [
58
58
  'localhost:5671',# valid
59
59
  'localhost:5672' # invalid
@@ -1,23 +1,23 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
- require File.dirname(__FILE__) + '/../lib/sweat_shop'
2
+ require File.dirname(__FILE__) + '/../lib/sweatshop'
3
3
 
4
- class SweatShopTest < Test::Unit::TestCase
5
- SweatShop.workers = []
4
+ class SweatshopTest < Test::Unit::TestCase
5
+ Sweatshop.workers = []
6
6
 
7
- class HelloWorker < SweatShop::Worker
7
+ class HelloWorker < Sweatshop::Worker
8
8
  def hello(name)
9
9
  "Hi, #{name}"
10
10
  end
11
11
  end
12
12
 
13
- class GroupedWorker < SweatShop::Worker
13
+ class GroupedWorker < Sweatshop::Worker
14
14
  queue_group :foo
15
15
  end
16
16
 
17
17
  should "group workers" do
18
- assert_equal [HelloWorker, GroupedWorker], SweatShop.workers_in_group(:all)
19
- assert_equal [HelloWorker], SweatShop.workers_in_group(:default)
20
- assert_equal [GroupedWorker], SweatShop.workers_in_group(:foo)
18
+ assert_equal [HelloWorker, GroupedWorker], Sweatshop.workers_in_group(:all)
19
+ assert_equal [HelloWorker], Sweatshop.workers_in_group(:default)
20
+ assert_equal [GroupedWorker], Sweatshop.workers_in_group(:foo)
21
21
  end
22
22
 
23
23
  should "synch call" do
@@ -26,8 +26,8 @@ class SweatShopTest < Test::Unit::TestCase
26
26
  end
27
27
 
28
28
  should "assign a uid" do
29
- SweatShop.logger = :silent
30
- SweatShop.config['enable'] = false
29
+ Sweatshop.logger = :silent
30
+ Sweatshop.config['enable'] = false
31
31
  uid = HelloWorker.async_hello('Amos')
32
32
  assert_not_nil uid
33
33
  end
@@ -47,7 +47,7 @@ class SweatShopTest < Test::Unit::TestCase
47
47
  end
48
48
 
49
49
  should "exception handler" do
50
- SweatShop.logger = :silent
50
+ Sweatshop.logger = :silent
51
51
 
52
52
  exception = nil
53
53
  HelloWorker.on_exception do |e|
@@ -60,7 +60,7 @@ class SweatShopTest < Test::Unit::TestCase
60
60
 
61
61
  should "chain before tasks" do
62
62
  MESSAGES = []
63
- class BaseWorker < SweatShop::Worker
63
+ class BaseWorker < Sweatshop::Worker
64
64
  before_task do |task|
65
65
  MESSAGES << 'base'
66
66
  end
@@ -72,7 +72,7 @@ class SweatShopTest < Test::Unit::TestCase
72
72
  end
73
73
  SubWorker.call_before_task('foo')
74
74
  assert_equal ['base', 'sub'], MESSAGES
75
- SweatShop.workers.delete(BaseWorker)
76
- SweatShop.workers.delete(SubWorker)
75
+ Sweatshop.workers.delete(BaseWorker)
76
+ Sweatshop.workers.delete(SubWorker)
77
77
  end
78
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sweatshop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amos Elliston
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-19 00:00:00 -07:00
12
+ date: 2009-10-20 00:00:00 -07:00
13
13
  default_executable: sweatd
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -43,11 +43,11 @@ files:
43
43
  - lib/message_queue/base.rb
44
44
  - lib/message_queue/kestrel.rb
45
45
  - lib/message_queue/rabbit.rb
46
- - lib/sweat_shop.rb
47
- - lib/sweat_shop/daemoned.rb
48
- - lib/sweat_shop/metaid.rb
49
- - lib/sweat_shop/sweatd.rb
50
- - lib/sweat_shop/worker.rb
46
+ - lib/sweatshop.rb
47
+ - lib/sweatshop/daemoned.rb
48
+ - lib/sweatshop/metaid.rb
49
+ - lib/sweatshop/sweatd.rb
50
+ - lib/sweatshop/worker.rb
51
51
  - script/initd.sh
52
52
  - script/kestrel
53
53
  - script/kestrel.sh