rock-queue 0.3.1 → 0.3.2
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/Rakefile
CHANGED
@@ -7,14 +7,13 @@ $LOAD_PATH.unshift 'lib'
|
|
7
7
|
require 'rock-queue/tasks'
|
8
8
|
|
9
9
|
GEM = "rock-queue"
|
10
|
-
GEM_VERSION = "0.3.
|
10
|
+
GEM_VERSION = "0.3.2"
|
11
11
|
SUMMARY = "A unified interface for various messaging queues"
|
12
|
-
AUTHORS = ["Grzegorz Kazulak"
|
12
|
+
AUTHORS = ["Grzegorz Kazulak"]
|
13
13
|
EMAIL = "gregorz.kazulak@gmail.com"
|
14
14
|
HOMEPAGE = "http://github.com/grzegorzkazulak/rock-queue"
|
15
15
|
|
16
16
|
begin
|
17
|
-
gem 'jeweler', '~> 1.4'
|
18
17
|
require 'jeweler'
|
19
18
|
Jeweler::Tasks.new do |gem|
|
20
19
|
gem.name = GEM
|
@@ -39,7 +38,6 @@ begin
|
|
39
38
|
gem.extra_rdoc_files = ["LICENSE"]
|
40
39
|
end
|
41
40
|
Jeweler::GemcutterTasks.new
|
42
|
-
FileList['tasks/**/*.rake'].each { |task| import task }
|
43
41
|
rescue LoadError
|
44
42
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
45
43
|
end
|
@@ -22,12 +22,11 @@ module RockQueue
|
|
22
22
|
|
23
23
|
module InstanceMethods
|
24
24
|
def async(method, *args)
|
25
|
-
RockQueue.push
|
25
|
+
RockQueue.push(self.class.queue, self.class, id, method, *args)
|
26
26
|
end
|
27
27
|
|
28
28
|
def async_at(method, time_to_run_at, *args)
|
29
|
-
RockQueue.push_at(
|
30
|
-
self.class.queue, self.class, time_to_run_at, id, method, *args)
|
29
|
+
RockQueue.push_at(self.class, time_to_run_at, method, id, *args)
|
31
30
|
end
|
32
31
|
end
|
33
32
|
end
|
@@ -28,12 +28,14 @@ module RockQueue
|
|
28
28
|
end
|
29
29
|
|
30
30
|
# Push items to Resque queue to be picked up by the worker on specified time
|
31
|
-
def push_at(value, time_to_run_at
|
31
|
+
def push_at(value, time_to_run_at, *args)
|
32
32
|
if !defined?(value.queue)
|
33
33
|
value.class_eval do
|
34
34
|
@queue = :default
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
raise "resque_scheduler is required" unless Resque.respond_to?(:enqueue_at)
|
37
39
|
Resque.enqueue_at time_to_run_at, value, args
|
38
40
|
end
|
39
41
|
|
@@ -41,7 +43,7 @@ module RockQueue
|
|
41
43
|
def pop(queue)
|
42
44
|
job = Resque.reserve(queue)
|
43
45
|
[job.payload_class, job.args] if job
|
44
|
-
end
|
46
|
+
end
|
45
47
|
|
46
48
|
# Register worker for web interface
|
47
49
|
def register_worker(worker)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
require 'resque_scheduler'
|
2
3
|
|
3
4
|
RockQueue.setup(
|
4
5
|
:adapter => :resque,
|
@@ -15,9 +16,27 @@ describe "Object with ActiveRecordHelper" do
|
|
15
16
|
it "class responds to .perform" do
|
16
17
|
@post.class.perform([@post.id, :title]).should == "Test"
|
17
18
|
end
|
19
|
+
|
20
|
+
it "should respond to queue" do
|
21
|
+
@post.class.queue.should == :default
|
22
|
+
end
|
18
23
|
|
19
24
|
it "calls a method asynchronously" do
|
20
25
|
@post.async(:archive)
|
21
26
|
RockQueue.pop(:default).should == [Post, [[@post.id, "archive"]]]
|
22
27
|
end
|
28
|
+
|
29
|
+
it "calls a method asynchronously at a given time" do
|
30
|
+
time = Time.now.to_i + 3600
|
31
|
+
|
32
|
+
Resque.delayed_queue_schedule_size.should == 0
|
33
|
+
@post.async_at(:archive, time)
|
34
|
+
|
35
|
+
Resque.delayed_queue_schedule_size.should == 1
|
36
|
+
Resque.next_item_for_timestamp(time).should == {
|
37
|
+
"args" => [["archive", @post.id]],
|
38
|
+
"class" => "Post",
|
39
|
+
"queue" => "default"
|
40
|
+
}
|
41
|
+
end
|
23
42
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
require "mail"
|
4
|
+
|
5
|
+
describe "Notifiers" do
|
6
|
+
it "registers an observer" do
|
7
|
+
notifiers = RockQueue::Notifiers.instance
|
8
|
+
notifier = RockQueue::EmailNotifier.new({:from => "joe@localhost", :to => "mike@localhost"})
|
9
|
+
|
10
|
+
notifiers.count_observers.should == 0
|
11
|
+
notifiers.register(notifier)
|
12
|
+
notifiers.count_observers.should == 1
|
13
|
+
notifiers.delete_observers
|
14
|
+
end
|
15
|
+
end
|
data/spec/resque_queue_spec.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
|
3
|
+
RockQueue.setup(
|
4
|
+
:adapter => :resque,
|
5
|
+
:server => 'localhost',
|
6
|
+
:port => 6379
|
7
|
+
)
|
8
|
+
|
3
9
|
describe "ResqueQueue" do
|
4
10
|
before(:each) do
|
5
11
|
@adapter = RockQueue::ResqueQueue.new(:server => 'localhost', :port => 6379)
|
@@ -7,4 +13,10 @@ describe "ResqueQueue" do
|
|
7
13
|
end
|
8
14
|
|
9
15
|
it_should_behave_like "RockQueue adapter"
|
16
|
+
|
17
|
+
it "should register worker" do
|
18
|
+
worker = RockQueue::Worker.new(:default)
|
19
|
+
@adapter.register_worker(worker)
|
20
|
+
Resque.redis.sismember(:workers, worker).should == true
|
21
|
+
end
|
10
22
|
end
|
metadata
CHANGED
@@ -1,35 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rock-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 17
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Grzegorz Kazulak
|
14
|
-
- Wojtek Mach
|
15
|
-
- Piotr Chmolowski
|
16
|
-
- Daniel Chrusciak
|
17
13
|
autorequire: rock-queue
|
18
14
|
bindir: bin
|
19
15
|
cert_chain: []
|
20
16
|
|
21
|
-
date: 2010-07-
|
17
|
+
date: 2010-07-31 00:00:00 +02:00
|
22
18
|
default_executable:
|
23
19
|
dependencies:
|
24
20
|
- !ruby/object:Gem::Dependency
|
25
21
|
name: rspec
|
26
22
|
prerelease: false
|
27
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
24
|
requirements:
|
30
25
|
- - ">="
|
31
26
|
- !ruby/object:Gem::Version
|
32
|
-
hash: 13
|
33
27
|
segments:
|
34
28
|
- 1
|
35
29
|
- 2
|
@@ -41,11 +35,9 @@ dependencies:
|
|
41
35
|
name: resque
|
42
36
|
prerelease: false
|
43
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
38
|
requirements:
|
46
39
|
- - ">="
|
47
40
|
- !ruby/object:Gem::Version
|
48
|
-
hash: 33
|
49
41
|
segments:
|
50
42
|
- 1
|
51
43
|
- 9
|
@@ -57,11 +49,9 @@ dependencies:
|
|
57
49
|
name: mail
|
58
50
|
prerelease: false
|
59
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
52
|
requirements:
|
62
53
|
- - ">="
|
63
54
|
- !ruby/object:Gem::Version
|
64
|
-
hash: 13
|
65
55
|
segments:
|
66
56
|
- 2
|
67
57
|
- 2
|
@@ -95,16 +85,6 @@ files:
|
|
95
85
|
- lib/rock-queue/web.rb
|
96
86
|
- lib/rock-queue/web/views/dashboard.erb
|
97
87
|
- lib/rock-queue/worker.rb
|
98
|
-
- spec/active_record_helper_spec.rb
|
99
|
-
- spec/beanstalkd_spec.rb
|
100
|
-
- spec/email_notifier_spec.rb
|
101
|
-
- spec/fixtures.rb
|
102
|
-
- spec/queue_object_spec.rb
|
103
|
-
- spec/resque_queue_spec.rb
|
104
|
-
- spec/rock_queue_spec.rb
|
105
|
-
- spec/shared.rb
|
106
|
-
- spec/spec_helper.rb
|
107
|
-
- spec/worker_spec.rb
|
108
88
|
has_rdoc: true
|
109
89
|
homepage: http://github.com/grzegorzkazulak/rock-queue
|
110
90
|
licenses: []
|
@@ -115,27 +95,23 @@ rdoc_options:
|
|
115
95
|
require_paths:
|
116
96
|
- lib
|
117
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
98
|
requirements:
|
120
99
|
- - ">="
|
121
100
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 3
|
123
101
|
segments:
|
124
102
|
- 0
|
125
103
|
version: "0"
|
126
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
105
|
requirements:
|
129
106
|
- - ">="
|
130
107
|
- !ruby/object:Gem::Version
|
131
|
-
hash: 3
|
132
108
|
segments:
|
133
109
|
- 0
|
134
110
|
version: "0"
|
135
111
|
requirements: []
|
136
112
|
|
137
113
|
rubyforge_project:
|
138
|
-
rubygems_version: 1.3.
|
114
|
+
rubygems_version: 1.3.6
|
139
115
|
signing_key:
|
140
116
|
specification_version: 3
|
141
117
|
summary: A unified interface for various messaging queues
|
@@ -144,6 +120,7 @@ test_files:
|
|
144
120
|
- spec/beanstalkd_spec.rb
|
145
121
|
- spec/email_notifier_spec.rb
|
146
122
|
- spec/fixtures.rb
|
123
|
+
- spec/notifiers_spec.rb
|
147
124
|
- spec/queue_object_spec.rb
|
148
125
|
- spec/resque_queue_spec.rb
|
149
126
|
- spec/rock_queue_spec.rb
|