resque-dynamic-queues 0.5.1 → 0.6.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/.gitignore +3 -2
- data/CHANGELOG +11 -0
- data/README.md +9 -0
- data/Rakefile +65 -0
- data/init.rb +1 -0
- data/lib/resque-dynamic-queues-server.rb +2 -0
- data/lib/resque/plugins/dynamic_queues/attributes.rb +15 -1
- data/lib/resque/plugins/dynamic_queues/queues.rb +1 -1
- data/lib/resque/plugins/dynamic_queues/server.rb +42 -0
- data/lib/resque/plugins/dynamic_queues/server/views/queues.erb +66 -0
- data/lib/resque/plugins/dynamic_queues/version.rb +1 -1
- data/resque-dynamic-queues.gemspec +1 -0
- data/spec/queues_spec.rb +36 -4
- data/spec/server_spec.rb +123 -0
- data/spec/spec_helper.rb +1 -0
- metadata +57 -44
data/.gitignore
CHANGED
data/CHANGELOG
ADDED
data/README.md
CHANGED
@@ -44,3 +44,12 @@ QUEUE='@key' rake resque:work
|
|
44
44
|
|
45
45
|
Pulls jobs from queue names stored in redis, with wildcards/negations
|
46
46
|
|
47
|
+
|
48
|
+
|
49
|
+
There is also a tab in the resque-web UI that allows you to define the dynamic queues To activate it, you need to require 'resque-dynamic-queues-server' in whatever initializer you use to bring up resque-web.
|
50
|
+
|
51
|
+
|
52
|
+
Contributors:
|
53
|
+
|
54
|
+
Matt Conway ( https://github.com/wr0ngway )
|
55
|
+
Bert Goethals ( https://github.com/Bertg )
|
data/Rakefile
CHANGED
@@ -1,2 +1,67 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
task :my_release => ['changelog', 'release'] do
|
5
|
+
end
|
6
|
+
|
7
|
+
task :changelog do
|
8
|
+
|
9
|
+
helper = Bundler::GemHelper.new(Dir.pwd)
|
10
|
+
version = "v#{helper.gemspec.version}"
|
11
|
+
|
12
|
+
changelog_file = 'CHANGELOG'
|
13
|
+
entries = ""
|
14
|
+
|
15
|
+
# Get a list of current tags
|
16
|
+
tags = `git tag -l`.split
|
17
|
+
tags = tags.sort_by {|t| t[1..-1].split(".").collect {|s| s.to_i } }
|
18
|
+
newest_tag = tags[-1]
|
19
|
+
|
20
|
+
if version == newest_tag
|
21
|
+
puts "You need to update version, same as most recent tag: #{version}"
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
|
25
|
+
# If we already have a changelog, make the last tag be the
|
26
|
+
# last one in the changelog, and the next one be the one
|
27
|
+
# following that in the tag list
|
28
|
+
newest_changelog_version = nil
|
29
|
+
if File.exist?(changelog_file)
|
30
|
+
entries = File.read(changelog_file)
|
31
|
+
head = entries.split.first
|
32
|
+
if head =~ /\d\.\d\.\d/
|
33
|
+
newest_changelog_version = "v#{head}"
|
34
|
+
|
35
|
+
if version == newest_changelog_version
|
36
|
+
puts "You need to update version, same as most recent changelog: #{version}"
|
37
|
+
exit
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Generate changelog from repo
|
44
|
+
log=`git log --pretty='format:%s <%h> [%cn]' #{newest_tag}..#{HEAD}`
|
45
|
+
|
46
|
+
# Strip out maintenance entries
|
47
|
+
log = log.lines.to_a.delete_if do |l|
|
48
|
+
l =~ /^Regenerated? gemspec/ ||
|
49
|
+
l =~ /^version bump/i ||
|
50
|
+
l =~ /^Updated changelog/ ||
|
51
|
+
l =~ /^Merged? branch/
|
52
|
+
end
|
53
|
+
|
54
|
+
# Write out changelog file
|
55
|
+
File.open(changelog_file, 'w') do |out|
|
56
|
+
out.puts version.gsub(/^v/, '')
|
57
|
+
out.puts "-----"
|
58
|
+
out.puts "\n"
|
59
|
+
out.puts log
|
60
|
+
out.puts "\n"
|
61
|
+
out.puts entries
|
62
|
+
end
|
63
|
+
|
64
|
+
# Commit and push
|
65
|
+
sh "git ci -m'Updated changelog' #{changelog_file}"
|
66
|
+
sh "git push"
|
67
|
+
end
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'resque-dynamic-queues'
|
@@ -4,7 +4,17 @@ module Resque
|
|
4
4
|
module Attributes
|
5
5
|
|
6
6
|
def get_dynamic_queue(key)
|
7
|
-
redis.lrange("dynamic_queue:#{key}", 0, -1)
|
7
|
+
queue_names = redis.lrange("dynamic_queue:#{key}", 0, -1)
|
8
|
+
|
9
|
+
if queue_names.nil? || queue_names.size == 0
|
10
|
+
queue_names = redis.lrange("dynamic_queue:default", 0, -1)
|
11
|
+
end
|
12
|
+
|
13
|
+
if queue_names.nil? || queue_names.size == 0
|
14
|
+
queue_names = Resque.queues
|
15
|
+
end
|
16
|
+
|
17
|
+
return queue_names
|
8
18
|
end
|
9
19
|
|
10
20
|
def set_dynamic_queue(key, values)
|
@@ -15,6 +25,10 @@ module Resque
|
|
15
25
|
end
|
16
26
|
end
|
17
27
|
|
28
|
+
def get_dynamic_queues
|
29
|
+
(redis.keys("dynamic_queue:*") || []).collect{|q| q.gsub('dynamic_queue:', '')}
|
30
|
+
end
|
31
|
+
|
18
32
|
end
|
19
33
|
end
|
20
34
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'resque-dynamic-queues'
|
2
|
+
|
3
|
+
module Resque
|
4
|
+
module Plugins
|
5
|
+
module DynamicQueues
|
6
|
+
module Server
|
7
|
+
|
8
|
+
VIEW_PATH = File.join(File.dirname(__FILE__), 'server', 'views')
|
9
|
+
|
10
|
+
def self.registered(app)
|
11
|
+
app.get "/dynamicqueues" do
|
12
|
+
@queues = Resque.get_dynamic_queues
|
13
|
+
dq_view :queues
|
14
|
+
end
|
15
|
+
|
16
|
+
app.post "/dynamicqueues" do
|
17
|
+
key = params['name']
|
18
|
+
values = params['queues'].to_s.split.collect{|q| q.gsub(/\s/, '')}
|
19
|
+
Resque.set_dynamic_queue(key, values)
|
20
|
+
redirect url(:dynamicqueues)
|
21
|
+
end
|
22
|
+
|
23
|
+
app.post "/dynamicqueues/:key/remove" do
|
24
|
+
key = params['key']
|
25
|
+
Resque.set_dynamic_queue(key, [])
|
26
|
+
redirect url(:dynamicqueues)
|
27
|
+
end
|
28
|
+
|
29
|
+
app.helpers do
|
30
|
+
def dq_view(filename, options = {}, locals = {})
|
31
|
+
erb(File.read(File.join(::Resque::Plugins::DynamicQueues::Server::VIEW_PATH, "#{filename}.erb")), options, locals)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
app.tabs << "DynamicQueues"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Resque::Server.register Resque::Plugins::DynamicQueues::Server
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<h1>Dynamic Queues</h1>
|
2
|
+
<table class='workers'>
|
3
|
+
<tr>
|
4
|
+
<th>Name</th>
|
5
|
+
<th>Value</th>
|
6
|
+
<th>Result</th>
|
7
|
+
<th>Workers</th>
|
8
|
+
<th></th>
|
9
|
+
</tr>
|
10
|
+
<% @queues.each do |queue| %>
|
11
|
+
<tr>
|
12
|
+
<td><%= queue %></td>
|
13
|
+
<td><%= Resque.get_dynamic_queue(queue).join(", ") %></td>
|
14
|
+
<td><%= Resque::Worker.new("@#{queue}").queues.join(", ") %></td>
|
15
|
+
<td></td>
|
16
|
+
<td>
|
17
|
+
<a href="<%= url(:dynamicqueues) %>/<%= queue %>/remove" class="remove">Remove</a>
|
18
|
+
</td>
|
19
|
+
</tr>
|
20
|
+
<% end %>
|
21
|
+
<tr>
|
22
|
+
<td>Fallback</td>
|
23
|
+
<td>-</td>
|
24
|
+
<td><%= Resque::Worker.new("@---").queues.join(', ') %></td>
|
25
|
+
<td></td>
|
26
|
+
<td>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
</table>
|
30
|
+
|
31
|
+
|
32
|
+
<h1>Make a new queue</h1>
|
33
|
+
<form action="<%= url(:dynamicqueues) %>" method="post" accept-charset="utf-8">
|
34
|
+
<p><input type="text" name="name"></p>
|
35
|
+
<p>
|
36
|
+
<textarea name="queues"></textarea>
|
37
|
+
Separate new queues by lines
|
38
|
+
</p>
|
39
|
+
<p><input type="submit" value="Create or Update"></p>
|
40
|
+
</form>
|
41
|
+
|
42
|
+
|
43
|
+
<script type="text/javascript" charset="utf-8">
|
44
|
+
jQuery(function($) {
|
45
|
+
|
46
|
+
$('a.remove').click(function(e) {
|
47
|
+
e.preventDefault();
|
48
|
+
var $link = $(this),
|
49
|
+
url = $link.attr('href'),
|
50
|
+
confirmed = confirm("Are you sure you want to kill this job? There is no undo.");
|
51
|
+
if (confirmed) {
|
52
|
+
$link.animate({opacity: 0.5});
|
53
|
+
$.ajax({
|
54
|
+
url: url,
|
55
|
+
type: 'post',
|
56
|
+
success: function() {
|
57
|
+
$link.parents('tr').remove();
|
58
|
+
}
|
59
|
+
});
|
60
|
+
} else {
|
61
|
+
return false
|
62
|
+
}
|
63
|
+
});
|
64
|
+
|
65
|
+
});
|
66
|
+
</script>
|
data/spec/queues_spec.rb
CHANGED
@@ -52,7 +52,7 @@ describe "Dynamic Queues" do
|
|
52
52
|
it "should pass lint" do
|
53
53
|
Resque::Plugin.lint(Resque::Plugins::DynamicQueues)
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
end
|
57
57
|
|
58
58
|
context "basic queue patterns" do
|
@@ -80,7 +80,7 @@ describe "Dynamic Queues" do
|
|
80
80
|
it "can include queues with pattern"do
|
81
81
|
worker = Resque::Worker.new("high*")
|
82
82
|
worker.queues.should == ["high_x", "high_y"]
|
83
|
-
|
83
|
+
|
84
84
|
worker = Resque::Worker.new("*high_z")
|
85
85
|
worker.queues.should == ["superhigh_z"]
|
86
86
|
|
@@ -108,6 +108,16 @@ describe "Dynamic Queues" do
|
|
108
108
|
worker.queues.should == ["bar", "foo"]
|
109
109
|
end
|
110
110
|
|
111
|
+
it "will not bloat the workers queue" do
|
112
|
+
Resque.watch_queue("high_x")
|
113
|
+
worker = Resque::Worker.new("@mykey")
|
114
|
+
|
115
|
+
worker.send(:instance_eval, "@queues").should == ['@mykey']
|
116
|
+
worker.queues.should == ["high_x"]
|
117
|
+
worker.send(:instance_eval, "@queues").should == ['@mykey']
|
118
|
+
worker.queues.should == ["high_x"]
|
119
|
+
end
|
120
|
+
|
111
121
|
it "uses hostname as default key in dynamic queues" do
|
112
122
|
host = `hostname`.chomp
|
113
123
|
Resque.set_dynamic_queue(host, ["foo", "bar"])
|
@@ -120,12 +130,34 @@ describe "Dynamic Queues" do
|
|
120
130
|
Resque.watch_queue("foo")
|
121
131
|
Resque.watch_queue("high_y")
|
122
132
|
Resque.watch_queue("superhigh_z")
|
123
|
-
|
133
|
+
|
124
134
|
Resque.set_dynamic_queue("mykey", ["*high*", "!high_y"])
|
125
135
|
worker = Resque::Worker.new("@mykey")
|
126
136
|
worker.queues.should == ["high_x", "superhigh_z"]
|
127
137
|
end
|
128
|
-
|
138
|
+
|
139
|
+
it "falls back to default queues when missing" do
|
140
|
+
Resque.set_dynamic_queue("default", ["foo", "bar"])
|
141
|
+
worker = Resque::Worker.new("@mykey")
|
142
|
+
worker.queues.should == ["bar", "foo"]
|
143
|
+
end
|
144
|
+
|
145
|
+
it "falls back to all queues when missing and no default" do
|
146
|
+
Resque.watch_queue("high_x")
|
147
|
+
Resque.watch_queue("foo")
|
148
|
+
worker = Resque::Worker.new("@mykey")
|
149
|
+
worker.queues.should == ["foo", "high_x"]
|
150
|
+
end
|
151
|
+
|
152
|
+
it "falls back to all queues when missing and no default and keep up to date" do
|
153
|
+
Resque.watch_queue("high_x")
|
154
|
+
Resque.watch_queue("foo")
|
155
|
+
worker = Resque::Worker.new("@mykey")
|
156
|
+
worker.queues.should == ["foo", "high_x"]
|
157
|
+
Resque.watch_queue("bar")
|
158
|
+
worker.queues.should == ["bar", "foo", "high_x"]
|
159
|
+
end
|
160
|
+
|
129
161
|
end
|
130
162
|
|
131
163
|
end
|
data/spec/server_spec.rb
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
ENV['RACK_ENV'] = 'test'
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'rack'
|
5
|
+
require 'rack/test'
|
6
|
+
require 'resque/server'
|
7
|
+
require 'resque-dynamic-queues-server'
|
8
|
+
|
9
|
+
Sinatra::Base.set :environment, :test
|
10
|
+
# ::Test::Unit::TestCase.send :include, Rack::Test::Methods
|
11
|
+
|
12
|
+
|
13
|
+
describe "Dynamic Queues pages" do
|
14
|
+
include Rack::Test::Methods
|
15
|
+
|
16
|
+
def app
|
17
|
+
@app ||= Resque::Server.new
|
18
|
+
end
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
Resque.redis.flushall
|
22
|
+
end
|
23
|
+
|
24
|
+
context "existnce in application" do
|
25
|
+
|
26
|
+
it "should respond to it's url" do
|
27
|
+
get "/dynamicqueues"
|
28
|
+
last_response.should be_ok
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should display its tab" do
|
32
|
+
get "/overview"
|
33
|
+
last_response.body.should include "<a href='/dynamicqueues'>DynamicQueues</a>"
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
context "show dynamic queues table" do
|
39
|
+
|
40
|
+
it "should shows names of queues" do
|
41
|
+
Resque.set_dynamic_queue("key_one", ["foo"])
|
42
|
+
Resque.set_dynamic_queue("key_two", ["bar"])
|
43
|
+
|
44
|
+
get "/dynamicqueues"
|
45
|
+
|
46
|
+
last_response.body.should include 'key_one'
|
47
|
+
last_response.body.should include 'key_two'
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should shows values of queues" do
|
51
|
+
Resque.set_dynamic_queue("key_one", ["foo"])
|
52
|
+
Resque.set_dynamic_queue("key_two", ["bar", "baz"])
|
53
|
+
|
54
|
+
get "/dynamicqueues"
|
55
|
+
|
56
|
+
last_response.body.should include 'foo'
|
57
|
+
last_response.body.should include 'bar, baz'
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
context "remove queue link" do
|
63
|
+
|
64
|
+
|
65
|
+
it "should shows remove link for queue" do
|
66
|
+
Resque.set_dynamic_queue("key_one", ["foo"])
|
67
|
+
|
68
|
+
get "/dynamicqueues"
|
69
|
+
|
70
|
+
last_response.body.should match /<a .*href=['"]http:\/\/example.org\/dynamicqueues\/key_one\/remove['"].*>/
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should remove queue when remove link clicked" do # JS will do the post
|
74
|
+
Resque.set_dynamic_queue("key_one", ["foo"])
|
75
|
+
|
76
|
+
post "/dynamicqueues/key_one/remove"
|
77
|
+
|
78
|
+
last_response.should be_redirect
|
79
|
+
last_response['Location'].should match /dynamicqueues/
|
80
|
+
Resque.get_dynamic_queue("key_two").should be_empty
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
context "form to edit queues" do
|
86
|
+
|
87
|
+
it "should have form to edit queues" do
|
88
|
+
get "/dynamicqueues"
|
89
|
+
|
90
|
+
last_response.body.should match /<form .*action=['"]http:\/\/example.org\/dynamicqueues['"].*>/
|
91
|
+
last_response.body.should match /<input .*name=['"]name['"].*>/
|
92
|
+
last_response.body.should match /<textarea .*name=['"]queues['"].*>/
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should delete queues on empty queue submit" do
|
96
|
+
Resque.set_dynamic_queue("key_two", ["bar", "baz"])
|
97
|
+
post "/dynamicqueues", {'name' => "key_two", "queues" => ""}
|
98
|
+
|
99
|
+
last_response.should be_redirect
|
100
|
+
last_response['Location'].should match /dynamicqueues/
|
101
|
+
Resque.get_dynamic_queue("key_two").should be_empty
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should create queues" do
|
105
|
+
post "/dynamicqueues", {'name' => "key_two", "queues" => "foo\n\rbar\n\rbaz"}
|
106
|
+
|
107
|
+
last_response.should be_redirect
|
108
|
+
last_response['Location'].should match /dynamicqueues/
|
109
|
+
Resque.get_dynamic_queue("key_two").should == %w{foo bar baz}
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should update queues" do
|
113
|
+
Resque.set_dynamic_queue("key_two", ["bar", "baz"])
|
114
|
+
post "/dynamicqueues", {'name' => "key_two", "queues" => "foo\n\rbar\n\rbaz"}
|
115
|
+
|
116
|
+
last_response.should be_redirect
|
117
|
+
last_response['Location'].should match /dynamicqueues/
|
118
|
+
Resque.get_dynamic_queue("key_two").should == %w{foo bar baz}
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,91 +1,104 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-dynamic-queues
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.5.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Matt Conway
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-03-28 00:00:00 -04:00
|
12
|
+
date: 2011-06-08 00:00:00.000000000 -04:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: resque
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2156532920 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
19
|
+
requirements:
|
22
20
|
- - ~>
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.10'
|
25
23
|
type: :runtime
|
26
|
-
|
27
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2156532920
|
26
|
+
- !ruby/object:Gem::Dependency
|
28
27
|
name: rspec
|
28
|
+
requirement: &2156532420 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.5'
|
34
|
+
type: :development
|
29
35
|
prerelease: false
|
30
|
-
|
36
|
+
version_requirements: *2156532420
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rack-test
|
39
|
+
requirement: &2156531960 !ruby/object:Gem::Requirement
|
31
40
|
none: false
|
32
|
-
requirements:
|
41
|
+
requirements:
|
33
42
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 0.5.4
|
36
45
|
type: :development
|
37
|
-
|
38
|
-
|
39
|
-
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2156531960
|
48
|
+
description: A resque plugin for specifying the queues a worker pulls from with wildcards,
|
49
|
+
negations, or dynamic look up from redis
|
50
|
+
email:
|
40
51
|
- matt@conwaysplace.com
|
41
52
|
executables: []
|
42
|
-
|
43
53
|
extensions: []
|
44
|
-
|
45
54
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
files:
|
55
|
+
files:
|
48
56
|
- .gitignore
|
57
|
+
- CHANGELOG
|
49
58
|
- Gemfile
|
50
59
|
- README.md
|
51
60
|
- Rakefile
|
61
|
+
- init.rb
|
62
|
+
- lib/resque-dynamic-queues-server.rb
|
52
63
|
- lib/resque-dynamic-queues.rb
|
53
64
|
- lib/resque/plugins/dynamic_queues/attributes.rb
|
54
65
|
- lib/resque/plugins/dynamic_queues/queues.rb
|
66
|
+
- lib/resque/plugins/dynamic_queues/server.rb
|
67
|
+
- lib/resque/plugins/dynamic_queues/server/views/queues.erb
|
55
68
|
- lib/resque/plugins/dynamic_queues/version.rb
|
56
69
|
- resque-dynamic-queues.gemspec
|
57
70
|
- spec/queues_spec.rb
|
58
71
|
- spec/redis-test.conf
|
72
|
+
- spec/server_spec.rb
|
59
73
|
- spec/spec_helper.rb
|
60
74
|
has_rdoc: true
|
61
|
-
homepage:
|
75
|
+
homepage: ''
|
62
76
|
licenses: []
|
63
|
-
|
64
77
|
post_install_message:
|
65
78
|
rdoc_options: []
|
66
|
-
|
67
|
-
require_paths:
|
79
|
+
require_paths:
|
68
80
|
- lib
|
69
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
82
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version:
|
75
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
88
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version:
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
81
93
|
requirements: []
|
82
|
-
|
83
94
|
rubyforge_project: resque-dynamic-queues
|
84
|
-
rubygems_version: 1.6.
|
95
|
+
rubygems_version: 1.6.2
|
85
96
|
signing_key:
|
86
97
|
specification_version: 3
|
87
|
-
summary: A resque plugin for specifying the queues a worker pulls from with wildcards,
|
88
|
-
|
98
|
+
summary: A resque plugin for specifying the queues a worker pulls from with wildcards,
|
99
|
+
negations, or dynamic look up from redis
|
100
|
+
test_files:
|
89
101
|
- spec/queues_spec.rb
|
90
102
|
- spec/redis-test.conf
|
103
|
+
- spec/server_spec.rb
|
91
104
|
- spec/spec_helper.rb
|