rock-queue 0.1.3 → 0.1.5
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 +1 -1
- data/lib/rock-queue/active_record_helper.rb +6 -3
- data/lib/rock-queue/adapters/resque.rb +8 -6
- data/lib/rock-queue/notifiers/email_notifier.rb +5 -6
- data/lib/rock-queue/queue_object.rb +5 -3
- data/lib/rock-queue/web/views/dashboard.erb +1 -31
- data/lib/rock-queue/worker.rb +2 -1
- data/lib/rock-queue.rb +4 -4
- metadata +2 -2
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
|
|
7
7
|
require 'rock-queue/tasks'
|
8
8
|
|
9
9
|
GEM = "rock-queue"
|
10
|
-
GEM_VERSION = "0.1.
|
10
|
+
GEM_VERSION = "0.1.5"
|
11
11
|
AUTHOR = "Grzegorz Kazulak"
|
12
12
|
EMAIL = "gregorz.kazulak@gmail.com"
|
13
13
|
HOMEPAGE = "http://github.com/grzegorzkazulak/rock-queue"
|
@@ -7,11 +7,14 @@ module RockQueue
|
|
7
7
|
base.send(:include, InstanceMethods)
|
8
8
|
end
|
9
9
|
|
10
|
-
module ClassMethods
|
11
|
-
def
|
10
|
+
module ClassMethods
|
11
|
+
def perform(*args)
|
12
|
+
args = args.first
|
13
|
+
id = args.shift
|
14
|
+
method = args.shift
|
12
15
|
find(id).send(method, *args)
|
13
16
|
end
|
14
|
-
end
|
17
|
+
end
|
15
18
|
|
16
19
|
module InstanceMethods
|
17
20
|
def async(method, *args)
|
@@ -10,24 +10,26 @@ module RockQueue
|
|
10
10
|
|
11
11
|
attr_reader :obj
|
12
12
|
|
13
|
+
# Contructor of Resque adapter
|
13
14
|
def initialize(options)
|
14
15
|
Resque.redis = "#{options[:server]}:#{options[:port]}"
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
+
# Push item from Resque queue
|
19
|
+
def push(value, args)
|
18
20
|
if !defined?(value.queue)
|
19
21
|
value.class_eval do
|
20
22
|
@queue = :default
|
21
23
|
end
|
22
24
|
end
|
23
|
-
Resque.enqueue value
|
25
|
+
Resque.enqueue value, args
|
24
26
|
end
|
25
|
-
|
27
|
+
|
28
|
+
# Retrieve item from Resque queue
|
26
29
|
def pop
|
27
30
|
job = Resque.reserve :default
|
28
|
-
if job
|
29
|
-
job.payload_class
|
30
|
-
end
|
31
|
+
[job.payload_class, job.args] if job
|
31
32
|
end
|
33
|
+
|
32
34
|
end
|
33
35
|
end
|
@@ -7,7 +7,7 @@ module RockQueue
|
|
7
7
|
end
|
8
8
|
|
9
9
|
# Notify by email
|
10
|
-
def update(
|
10
|
+
def update(error)
|
11
11
|
|
12
12
|
begin
|
13
13
|
require 'mail'
|
@@ -15,7 +15,7 @@ module RockQueue
|
|
15
15
|
puts "You need `mail` gem to use the Email Notifier"
|
16
16
|
end
|
17
17
|
|
18
|
-
puts "Sending e-mail message: #{message}"
|
18
|
+
puts "Sending e-mail message: #{error.message}"
|
19
19
|
|
20
20
|
Mail.defaults do
|
21
21
|
smtp do
|
@@ -24,16 +24,15 @@ module RockQueue
|
|
24
24
|
user $server_config[:username]
|
25
25
|
pass $server_config[:password]
|
26
26
|
end
|
27
|
-
|
28
|
-
|
29
27
|
end
|
30
28
|
|
31
29
|
Mail.deliver do
|
32
30
|
from $server_config[:from]
|
33
31
|
to $server_config[:to]
|
34
|
-
subject
|
35
|
-
body
|
32
|
+
subject "Processing error - '#{error.message}''"
|
33
|
+
body error.backtrace.join("\n")
|
36
34
|
end
|
35
|
+
|
37
36
|
end
|
38
37
|
|
39
38
|
end
|
@@ -5,11 +5,13 @@ module RockQueue
|
|
5
5
|
|
6
6
|
DEFAULT_FAIL_LIMIT = 3
|
7
7
|
|
8
|
-
attr_reader :object, :fails
|
8
|
+
attr_reader :object, :args, :fails
|
9
9
|
|
10
|
-
|
10
|
+
# Constructor of queue objects wrapper
|
11
|
+
def initialize(object, args)
|
11
12
|
@object = object
|
12
|
-
@
|
13
|
+
@args = args
|
14
|
+
@fails = Array.new
|
13
15
|
end
|
14
16
|
|
15
17
|
# Add processing fail
|
@@ -1,31 +1 @@
|
|
1
|
-
|
2
|
-
<head>
|
3
|
-
<title>Rock Queue - Web interface</title>
|
4
|
-
<style>
|
5
|
-
body {
|
6
|
-
font-family: Helvetica, sans-serif;
|
7
|
-
}
|
8
|
-
|
9
|
-
h1{
|
10
|
-
font-size: 24px;
|
11
|
-
}
|
12
|
-
h2 {
|
13
|
-
font-size: 14px;
|
14
|
-
}
|
15
|
-
</style>
|
16
|
-
</head>
|
17
|
-
<body>
|
18
|
-
<h1>RockQueue Web Interface</h1>
|
19
|
-
|
20
|
-
<% @workers = ['192.168.0.1:4344', '192.168.0.1:3434', '192.168.0.1:2333'] %>
|
21
|
-
|
22
|
-
<h2>Workers list</h2>
|
23
|
-
<ul>
|
24
|
-
<% for worker in @workers do %>
|
25
|
-
<li>
|
26
|
-
<%= worker %>
|
27
|
-
</li>
|
28
|
-
<% end %>
|
29
|
-
</ul>
|
30
|
-
</body>
|
31
|
-
</html>
|
1
|
+
RockQueue Web Interface
|
data/lib/rock-queue/worker.rb
CHANGED
@@ -22,7 +22,8 @@ module RockQueue
|
|
22
22
|
if queue
|
23
23
|
# code that actually performs the action
|
24
24
|
begin
|
25
|
-
queue.
|
25
|
+
args = queue.args.first
|
26
|
+
args.empty? ? queue.object.perform : queue.object.perform(args)
|
26
27
|
rescue Object => e
|
27
28
|
# Add failed processing and retry
|
28
29
|
if queue.add_fail(e)
|
data/lib/rock-queue.rb
CHANGED
@@ -48,8 +48,8 @@ module RockQueue
|
|
48
48
|
|
49
49
|
# Pushes the value (in our case it should always be an object)
|
50
50
|
# onto the queue using previously selected adapter
|
51
|
-
def push(value, *
|
52
|
-
@adapter.push(value,
|
51
|
+
def push(value, *args)
|
52
|
+
@adapter.push(value, args)
|
53
53
|
end
|
54
54
|
|
55
55
|
|
@@ -59,9 +59,9 @@ module RockQueue
|
|
59
59
|
# All calls to the queueing server are made through the previosuly selected adaper.
|
60
60
|
def receive
|
61
61
|
if block_given?
|
62
|
-
obj = @adapter.pop
|
62
|
+
obj, args = @adapter.pop
|
63
63
|
if obj
|
64
|
-
yield QueueObject.new(obj)
|
64
|
+
yield QueueObject.new(obj, args)
|
65
65
|
end
|
66
66
|
else
|
67
67
|
raise 'No block given'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rock-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Kazulak
|
@@ -9,7 +9,7 @@ autorequire: rock-queue
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11
|
12
|
+
date: 2009-12-11 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|