ayl-beanstalk 0.3.0 → 0.4.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.
- checksums.yaml +7 -0
- data/Gemfile +10 -12
- data/Gemfile.lock +118 -97
- data/LICENSE.txt +1 -1
- data/README.rdoc +26 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/ayl-beanstalk.gemspec +31 -30
- data/bin/ayl_beanstalk +103 -50
- data/lib/ayl-beanstalk.rb +2 -1
- data/lib/ayl-beanstalk/engine.rb +6 -3
- data/lib/ayl-beanstalk/job.rb +17 -13
- data/lib/ayl-beanstalk/pool.rb +1 -1
- data/lib/ayl-beanstalk/worker.rb +2 -2
- data/spec/ayl_worker_control_spec.rb +2 -2
- data/spec/ayl_worker_spec.rb +33 -33
- data/spec/command_line_spec.rb +5 -5
- data/spec/engine_spec.rb +16 -14
- data/spec/job_spec.rb +59 -65
- data/spec/spec_helper.rb +28 -1
- data/spec/worker_spec.rb +98 -94
- metadata +45 -65
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 88e80db809fd24274ca8a7ac03f2abb7e7ae8527
|
4
|
+
data.tar.gz: ff8f5cc4c9c5aeb2547f56c2aae430435ea6cc69
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3dc71dbcf479f955a30ab21606321c6131a7abaacf624015328576f98b2e54b1c5bd8fd9a6bd47dce0a7957c88e500a8b0bc3cdc0b0e760c7100ab89f60423ab
|
7
|
+
data.tar.gz: ae83500715d9fe73bb63f4b4651ff4ed925c2c6a56c965651f59a75e8727c7dc6ab6da7f4811a0578f2633ca43ce57db79aab3c452b156abb0fb5ccdcd79227c
|
data/Gemfile
CHANGED
@@ -2,21 +2,19 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem 'ayl', "
|
6
|
-
gem '
|
7
|
-
gem 'daemons', "
|
5
|
+
gem 'ayl', "~> 0.4"
|
6
|
+
gem 'beaneater', '~> 1.0'
|
7
|
+
gem 'daemons', "~> 1.1"
|
8
8
|
|
9
9
|
# Add dependencies to develop your gem here.
|
10
10
|
# Include everything needed to run rake, tests, features, etc.
|
11
11
|
group :development do
|
12
|
-
gem "rspec", "
|
13
|
-
gem "bundler", "
|
14
|
-
gem "jeweler", "
|
15
|
-
gem "rcov", ">= 0"
|
16
|
-
gem 'pry'
|
12
|
+
gem "rspec", "~> 2.14"
|
13
|
+
gem "bundler", "~> 1.10"
|
14
|
+
gem "jeweler", "~> 2.0"
|
17
15
|
end
|
18
16
|
|
19
|
-
group :test do
|
20
|
-
gem 'rails', "
|
21
|
-
gem 'pry'
|
22
|
-
end
|
17
|
+
group :test, :development do
|
18
|
+
gem 'rails', "~> 4.1"
|
19
|
+
gem 'pry', "~> 0.9"
|
20
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,125 +1,146 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
actionmailer (
|
5
|
-
actionpack (=
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
actionmailer (4.1.10)
|
5
|
+
actionpack (= 4.1.10)
|
6
|
+
actionview (= 4.1.10)
|
7
|
+
mail (~> 2.5, >= 2.5.4)
|
8
|
+
actionpack (4.1.10)
|
9
|
+
actionview (= 4.1.10)
|
10
|
+
activesupport (= 4.1.10)
|
11
|
+
rack (~> 1.5.2)
|
12
|
+
rack-test (~> 0.6.2)
|
13
|
+
actionview (4.1.10)
|
14
|
+
activesupport (= 4.1.10)
|
15
|
+
builder (~> 3.1)
|
11
16
|
erubis (~> 2.7.0)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
activesupport (3.1.2)
|
31
|
-
multi_json (~> 1.0)
|
32
|
-
arel (2.2.1)
|
33
|
-
ayl (0.3.0)
|
34
|
-
beanstalk-client (1.1.1)
|
35
|
-
builder (3.0.0)
|
17
|
+
activemodel (4.1.10)
|
18
|
+
activesupport (= 4.1.10)
|
19
|
+
builder (~> 3.1)
|
20
|
+
activerecord (4.1.10)
|
21
|
+
activemodel (= 4.1.10)
|
22
|
+
activesupport (= 4.1.10)
|
23
|
+
arel (~> 5.0.0)
|
24
|
+
activesupport (4.1.10)
|
25
|
+
i18n (~> 0.6, >= 0.6.9)
|
26
|
+
json (~> 1.7, >= 1.7.7)
|
27
|
+
minitest (~> 5.1)
|
28
|
+
thread_safe (~> 0.1)
|
29
|
+
tzinfo (~> 1.1)
|
30
|
+
addressable (2.3.8)
|
31
|
+
arel (5.0.1.20140414130214)
|
32
|
+
ayl (0.4.0)
|
33
|
+
beaneater (1.0.0)
|
34
|
+
builder (3.2.2)
|
36
35
|
coderay (0.9.8)
|
37
36
|
daemons (1.1.4)
|
38
|
-
|
37
|
+
descendants_tracker (0.0.4)
|
38
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
39
|
+
diff-lcs (1.2.5)
|
39
40
|
erubis (2.7.0)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
faraday (0.9.1)
|
42
|
+
multipart-post (>= 1.2, < 3)
|
43
|
+
git (1.2.9.1)
|
44
|
+
github_api (0.12.3)
|
45
|
+
addressable (~> 2.3)
|
46
|
+
descendants_tracker (~> 0.0.4)
|
47
|
+
faraday (~> 0.8, < 0.10)
|
48
|
+
hashie (>= 3.3)
|
49
|
+
multi_json (>= 1.7.5, < 2.0)
|
50
|
+
nokogiri (~> 1.6.3)
|
51
|
+
oauth2
|
52
|
+
hashie (3.4.2)
|
53
|
+
highline (1.7.2)
|
54
|
+
i18n (0.7.0)
|
55
|
+
jeweler (2.0.1)
|
56
|
+
builder
|
57
|
+
bundler (>= 1.0)
|
45
58
|
git (>= 1.2.5)
|
59
|
+
github_api
|
60
|
+
highline (>= 1.6.15)
|
61
|
+
nokogiri (>= 1.5.10)
|
46
62
|
rake
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
63
|
+
rdoc
|
64
|
+
json (1.8.3)
|
65
|
+
jwt (1.5.0)
|
66
|
+
mail (2.6.3)
|
67
|
+
mime-types (>= 1.16, < 3)
|
52
68
|
method_source (0.6.7)
|
53
69
|
ruby_parser (>= 2.3.1)
|
54
|
-
mime-types (
|
55
|
-
|
56
|
-
|
70
|
+
mime-types (2.6.1)
|
71
|
+
mini_portile (0.6.2)
|
72
|
+
minitest (5.7.0)
|
73
|
+
multi_json (1.11.0)
|
74
|
+
multi_xml (0.5.5)
|
75
|
+
multipart-post (2.0.0)
|
76
|
+
nokogiri (1.6.6.2)
|
77
|
+
mini_portile (~> 0.6.0)
|
78
|
+
oauth2 (1.0.0)
|
79
|
+
faraday (>= 0.8, < 0.10)
|
80
|
+
jwt (~> 1.0)
|
81
|
+
multi_json (~> 1.3)
|
82
|
+
multi_xml (~> 0.5)
|
83
|
+
rack (~> 1.2)
|
57
84
|
pry (0.9.7.4)
|
58
85
|
coderay (~> 0.9.8)
|
59
86
|
method_source (~> 0.6.7)
|
60
87
|
ruby_parser (>= 2.3.1)
|
61
88
|
slop (~> 2.1.0)
|
62
|
-
rack (1.3
|
63
|
-
rack-
|
64
|
-
rack (>= 0.4)
|
65
|
-
rack-mount (0.8.3)
|
66
|
-
rack (>= 1.0.0)
|
67
|
-
rack-ssl (1.3.2)
|
68
|
-
rack
|
69
|
-
rack-test (0.6.1)
|
89
|
+
rack (1.5.3)
|
90
|
+
rack-test (0.6.3)
|
70
91
|
rack (>= 1.0)
|
71
|
-
rails (
|
72
|
-
actionmailer (=
|
73
|
-
actionpack (=
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
92
|
+
rails (4.1.10)
|
93
|
+
actionmailer (= 4.1.10)
|
94
|
+
actionpack (= 4.1.10)
|
95
|
+
actionview (= 4.1.10)
|
96
|
+
activemodel (= 4.1.10)
|
97
|
+
activerecord (= 4.1.10)
|
98
|
+
activesupport (= 4.1.10)
|
99
|
+
bundler (>= 1.3.0, < 2.0)
|
100
|
+
railties (= 4.1.10)
|
101
|
+
sprockets-rails (~> 2.0)
|
102
|
+
railties (4.1.10)
|
103
|
+
actionpack (= 4.1.10)
|
104
|
+
activesupport (= 4.1.10)
|
83
105
|
rake (>= 0.8.7)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
rspec-
|
95
|
-
rspec-expectations (2.7.0)
|
96
|
-
diff-lcs (~> 1.1.2)
|
97
|
-
rspec-mocks (2.7.0)
|
106
|
+
thor (>= 0.18.1, < 2.0)
|
107
|
+
rake (10.4.2)
|
108
|
+
rdoc (4.2.0)
|
109
|
+
rspec (2.99.0)
|
110
|
+
rspec-core (~> 2.99.0)
|
111
|
+
rspec-expectations (~> 2.99.0)
|
112
|
+
rspec-mocks (~> 2.99.0)
|
113
|
+
rspec-core (2.99.2)
|
114
|
+
rspec-expectations (2.99.2)
|
115
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
116
|
+
rspec-mocks (2.99.3)
|
98
117
|
ruby_parser (2.3.1)
|
99
118
|
sexp_processor (~> 3.0)
|
100
119
|
sexp_processor (3.0.8)
|
101
120
|
slop (2.1.0)
|
102
|
-
sprockets (2.
|
103
|
-
hike (~> 1.2)
|
121
|
+
sprockets (3.2.0)
|
104
122
|
rack (~> 1.0)
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
tzinfo (
|
123
|
+
sprockets-rails (2.3.1)
|
124
|
+
actionpack (>= 3.0)
|
125
|
+
activesupport (>= 3.0)
|
126
|
+
sprockets (>= 2.8, < 4.0)
|
127
|
+
thor (0.19.1)
|
128
|
+
thread_safe (0.3.5)
|
129
|
+
tzinfo (1.2.2)
|
130
|
+
thread_safe (~> 0.1)
|
112
131
|
|
113
132
|
PLATFORMS
|
114
133
|
ruby
|
115
134
|
|
116
135
|
DEPENDENCIES
|
117
|
-
ayl (
|
118
|
-
|
119
|
-
bundler (
|
120
|
-
daemons (
|
121
|
-
jeweler (
|
122
|
-
pry
|
123
|
-
rails (
|
124
|
-
|
125
|
-
|
136
|
+
ayl (~> 0.4)
|
137
|
+
beaneater (~> 1.0)
|
138
|
+
bundler (~> 1.10)
|
139
|
+
daemons (~> 1.1)
|
140
|
+
jeweler (~> 2.0)
|
141
|
+
pry (~> 0.9)
|
142
|
+
rails (~> 4.1)
|
143
|
+
rspec (~> 2.14)
|
144
|
+
|
145
|
+
BUNDLED WITH
|
146
|
+
1.10.3
|
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
This gem provides a reference implementation of a beanstalk Engine for the
|
4
4
|
{ayl}[https://github.com/j0hnds/ayl] gem.
|
5
5
|
|
6
|
-
If you want to use this technology in a Rails
|
7
|
-
following in your config/environments/*.rb files:
|
6
|
+
If you want to use this technology in a Rails 4.* application you can do the
|
7
|
+
following in your config/application.rb or config/environments/*.rb files:
|
8
8
|
|
9
9
|
YourApp::Application.configure do
|
10
10
|
|
@@ -31,6 +31,29 @@ following in your config/environments/*.rb files:
|
|
31
31
|
# The default is 'default'.
|
32
32
|
# Ayl::MessageOptions.default_queue_name = '1.2.3'
|
33
33
|
|
34
|
+
# Set the default failed job handler to 'decay'. The default is
|
35
|
+
# 'delete', another option is to 'bury'. So, 'delete' will delete
|
36
|
+
# a failed job. 'bury' will move the job to the 'buried' state
|
37
|
+
# requiring a 'kick' to place it back in the ready state. 'decay'
|
38
|
+
# means that if the job has been reserved less than 'failed_job_count'
|
39
|
+
# (see below), it will be placed back on the tube with a delay of
|
40
|
+
# 'failed_job_delay' (see below). This allows jobs to be retried
|
41
|
+
# with a delay. This is handy for the case where the jobs may be
|
42
|
+
# dependent on a third party that can have spotty availability
|
43
|
+
# (like anything on the internet).
|
44
|
+
Ayl::MessageOptions.default_failed_job_handler = 'decay'
|
45
|
+
|
46
|
+
# Set the default failed job count to '3'. That is the default.
|
47
|
+
# If the failed job handler is 'decay', this means it retry the
|
48
|
+
# job until it has been reserved three times (initial try, then
|
49
|
+
# two failures).
|
50
|
+
Ayl::MessageOptions.default_failed_job_count = 4
|
51
|
+
|
52
|
+
# Set the default failed job delay to '30'. That is the default.
|
53
|
+
# If the failed job handler is 'decay', this means that there
|
54
|
+
# will be a 30 second delay between each retry of the job.
|
55
|
+
Ayl::MessageOptions.default_failed_job_delay = 10
|
56
|
+
|
34
57
|
# Set up the logger for Ayl
|
35
58
|
Ayl::Logger.instance.logger = ::Rails.logger
|
36
59
|
|
@@ -77,6 +100,6 @@ The ayl_worker_control script can easily be invoked by an /etc/init.d script to
|
|
77
100
|
|
78
101
|
== Copyright
|
79
102
|
|
80
|
-
Copyright (c) 2011 j0hnds@gmail.com. See LICENSE.txt for
|
103
|
+
Copyright (c) 2011-2015 j0hnds@gmail.com. See LICENSE.txt for
|
81
104
|
further details.
|
82
105
|
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
|
|
18
18
|
gem.homepage = "http://github.com/j0hnds/ayl-beanstalk"
|
19
19
|
gem.license = "MIT"
|
20
20
|
gem.summary = %Q{Ayl extension to provide beanstalk support.}
|
21
|
-
gem.description = %Q{Ayl extension to provide beanstalk support.}
|
21
|
+
gem.description = %Q{Ayl extension to provide beanstalk support for applications requiring async processing.}
|
22
22
|
gem.email = "j0hnds@gmail.com"
|
23
23
|
gem.authors = ["j0hnds@gmail.com"]
|
24
24
|
# dependencies defined in Gemfile
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/ayl-beanstalk.gemspec
CHANGED
@@ -2,15 +2,17 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: ayl-beanstalk 0.4.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "ayl-beanstalk"
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "0.4.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["j0hnds@gmail.com"]
|
12
|
-
s.date = "
|
13
|
-
s.description = "Ayl extension to provide beanstalk support."
|
14
|
+
s.date = "2015-06-15"
|
15
|
+
s.description = "Ayl extension to provide beanstalk support for applications requiring async processing."
|
14
16
|
s.email = "j0hnds@gmail.com"
|
15
17
|
s.executables = ["ayl_beanstalk", "ayl_worker", "ayl_worker_control"]
|
16
18
|
s.extra_rdoc_files = [
|
@@ -49,41 +51,40 @@ Gem::Specification.new do |s|
|
|
49
51
|
]
|
50
52
|
s.homepage = "http://github.com/j0hnds/ayl-beanstalk"
|
51
53
|
s.licenses = ["MIT"]
|
52
|
-
s.
|
53
|
-
s.rubygems_version = "1.8.23"
|
54
|
+
s.rubygems_version = "2.4.6"
|
54
55
|
s.summary = "Ayl extension to provide beanstalk support."
|
55
56
|
|
56
57
|
if s.respond_to? :specification_version then
|
57
|
-
s.specification_version =
|
58
|
+
s.specification_version = 4
|
58
59
|
|
59
60
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
60
|
-
s.add_runtime_dependency(%q<ayl>, ["
|
61
|
-
s.add_runtime_dependency(%q<
|
62
|
-
s.add_runtime_dependency(%q<daemons>, ["
|
63
|
-
s.add_development_dependency(%q<rspec>, ["
|
64
|
-
s.add_development_dependency(%q<bundler>, ["
|
65
|
-
s.add_development_dependency(%q<jeweler>, ["
|
66
|
-
s.add_development_dependency(%q<
|
67
|
-
s.add_development_dependency(%q<pry>, ["
|
61
|
+
s.add_runtime_dependency(%q<ayl>, ["~> 0.4"])
|
62
|
+
s.add_runtime_dependency(%q<beaneater>, ["~> 1.0"])
|
63
|
+
s.add_runtime_dependency(%q<daemons>, ["~> 1.1"])
|
64
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.14"])
|
65
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.10"])
|
66
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
67
|
+
s.add_development_dependency(%q<rails>, ["~> 4.1"])
|
68
|
+
s.add_development_dependency(%q<pry>, ["~> 0.9"])
|
68
69
|
else
|
69
|
-
s.add_dependency(%q<ayl>, ["
|
70
|
-
s.add_dependency(%q<
|
71
|
-
s.add_dependency(%q<daemons>, ["
|
72
|
-
s.add_dependency(%q<rspec>, ["
|
73
|
-
s.add_dependency(%q<bundler>, ["
|
74
|
-
s.add_dependency(%q<jeweler>, ["
|
75
|
-
s.add_dependency(%q<
|
76
|
-
s.add_dependency(%q<pry>, ["
|
70
|
+
s.add_dependency(%q<ayl>, ["~> 0.4"])
|
71
|
+
s.add_dependency(%q<beaneater>, ["~> 1.0"])
|
72
|
+
s.add_dependency(%q<daemons>, ["~> 1.1"])
|
73
|
+
s.add_dependency(%q<rspec>, ["~> 2.14"])
|
74
|
+
s.add_dependency(%q<bundler>, ["~> 1.10"])
|
75
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
76
|
+
s.add_dependency(%q<rails>, ["~> 4.1"])
|
77
|
+
s.add_dependency(%q<pry>, ["~> 0.9"])
|
77
78
|
end
|
78
79
|
else
|
79
|
-
s.add_dependency(%q<ayl>, ["
|
80
|
-
s.add_dependency(%q<
|
81
|
-
s.add_dependency(%q<daemons>, ["
|
82
|
-
s.add_dependency(%q<rspec>, ["
|
83
|
-
s.add_dependency(%q<bundler>, ["
|
84
|
-
s.add_dependency(%q<jeweler>, ["
|
85
|
-
s.add_dependency(%q<
|
86
|
-
s.add_dependency(%q<pry>, ["
|
80
|
+
s.add_dependency(%q<ayl>, ["~> 0.4"])
|
81
|
+
s.add_dependency(%q<beaneater>, ["~> 1.0"])
|
82
|
+
s.add_dependency(%q<daemons>, ["~> 1.1"])
|
83
|
+
s.add_dependency(%q<rspec>, ["~> 2.14"])
|
84
|
+
s.add_dependency(%q<bundler>, ["~> 1.10"])
|
85
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
86
|
+
s.add_dependency(%q<rails>, ["~> 4.1"])
|
87
|
+
s.add_dependency(%q<pry>, ["~> 0.9"])
|
87
88
|
end
|
88
89
|
end
|
89
90
|
|
data/bin/ayl_beanstalk
CHANGED
@@ -4,8 +4,9 @@
|
|
4
4
|
# running this script, enter 'beastalk_info.rb --help' on the command line.
|
5
5
|
#
|
6
6
|
require 'date'
|
7
|
+
require 'json'
|
7
8
|
require 'optparse'
|
8
|
-
require '
|
9
|
+
require 'beaneater'
|
9
10
|
|
10
11
|
DEFAULT_COMMAND = 'statistics'
|
11
12
|
|
@@ -37,7 +38,12 @@ class BeanstalkCommander
|
|
37
38
|
#
|
38
39
|
def job_statistics(job_number)
|
39
40
|
raise "Must specify a job number to get the statistics for" unless job_number
|
40
|
-
|
41
|
+
job = pool.jobs.find(job_number)
|
42
|
+
if job.nil?
|
43
|
+
puts "Unable to find job with id: #{job_number}"
|
44
|
+
else
|
45
|
+
format_statistics(job.stats)
|
46
|
+
end
|
41
47
|
end
|
42
48
|
|
43
49
|
#
|
@@ -45,7 +51,12 @@ class BeanstalkCommander
|
|
45
51
|
#
|
46
52
|
def tube_statistics(*args)
|
47
53
|
puts "Statistics for Tube: #{@tube}"
|
48
|
-
|
54
|
+
tube = pool.tubes[@tube]
|
55
|
+
if tube.nil?
|
56
|
+
puts "Unable to find tube: #{@tube}"
|
57
|
+
else
|
58
|
+
format_statistics(tube.stats)
|
59
|
+
end
|
49
60
|
end
|
50
61
|
|
51
62
|
#
|
@@ -61,12 +72,8 @@ class BeanstalkCommander
|
|
61
72
|
# Lists the tubes active on beanstalk
|
62
73
|
#
|
63
74
|
def list_tubes(*args)
|
64
|
-
tubes
|
65
|
-
|
66
|
-
puts "------------"
|
67
|
-
tubes.each_pair do | host, tubes |
|
68
|
-
puts host
|
69
|
-
tubes.each { | tube | puts " - #{tube}" }
|
75
|
+
pool.tubes.all.each do | tube |
|
76
|
+
puts " - #{tube.name}"
|
70
77
|
end
|
71
78
|
end
|
72
79
|
|
@@ -76,7 +83,7 @@ class BeanstalkCommander
|
|
76
83
|
#
|
77
84
|
def peek_job(job_number)
|
78
85
|
raise "Must specify a job number to peek" unless job_number
|
79
|
-
job = pool.
|
86
|
+
job = pool.jobs.find(job_number)
|
80
87
|
format_job(job)
|
81
88
|
end
|
82
89
|
|
@@ -85,42 +92,63 @@ class BeanstalkCommander
|
|
85
92
|
#
|
86
93
|
def delete(job_number)
|
87
94
|
raise "Must specify a job number to delete" unless job_number
|
88
|
-
pool.
|
95
|
+
job = pool.jobs.find(job_number)
|
96
|
+
if job.nil?
|
97
|
+
puts "Unable to find job with ID: #{job_number}"
|
98
|
+
else
|
99
|
+
job.delete
|
100
|
+
end
|
89
101
|
end
|
90
102
|
|
91
103
|
#
|
92
104
|
# Displays the most current job on the ready queue
|
93
105
|
#
|
94
106
|
def peek_ready(*args)
|
95
|
-
pool.
|
96
|
-
|
97
|
-
|
107
|
+
tube = pool.tubes[@tube]
|
108
|
+
if tube.nil?
|
109
|
+
puts "No tube: #{@tube}"
|
110
|
+
else
|
111
|
+
job = tube.peek(:ready)
|
112
|
+
format_job(job)
|
113
|
+
end
|
98
114
|
end
|
99
115
|
|
100
116
|
#
|
101
117
|
# Kick any buried/delayed jobs in te queue
|
102
118
|
#
|
103
119
|
def kick(*args)
|
104
|
-
pool.
|
105
|
-
|
120
|
+
tube = pool.tubes[@tube]
|
121
|
+
if tube.nil?
|
122
|
+
puts "No tube: #{@tube}"
|
123
|
+
else
|
124
|
+
tube.kick
|
125
|
+
end
|
106
126
|
end
|
107
127
|
|
108
128
|
#
|
109
129
|
# Displays the most current job on the delayed queue
|
110
130
|
#
|
111
131
|
def peek_delayed(*args)
|
112
|
-
pool.
|
113
|
-
|
114
|
-
|
132
|
+
tube = pool.tubes[@tube]
|
133
|
+
if tube.nil?
|
134
|
+
puts "No tube: #{@tube}"
|
135
|
+
else
|
136
|
+
job = tube.peek(:delayed)
|
137
|
+
format_job(job)
|
138
|
+
end
|
115
139
|
end
|
116
140
|
|
117
141
|
#
|
118
142
|
# Displays the most current job on the buried queue
|
119
143
|
#
|
120
144
|
def peek_buried(*args)
|
121
|
-
pool.
|
122
|
-
|
123
|
-
|
145
|
+
tube = pool.tubes[@tube]
|
146
|
+
if tube.nil?
|
147
|
+
puts "No tube: #{@tube}"
|
148
|
+
else
|
149
|
+
job = tube.peek(:buried)
|
150
|
+
format_job(job)
|
151
|
+
end
|
124
152
|
end
|
125
153
|
|
126
154
|
#
|
@@ -128,10 +156,14 @@ class BeanstalkCommander
|
|
128
156
|
#
|
129
157
|
def put_job(job_body)
|
130
158
|
raise "Must specify a job body to put" unless job_body
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
159
|
+
tube = pool.tubes[@tube]
|
160
|
+
if tube.nil?
|
161
|
+
puts "No tube: #{@tube}"
|
162
|
+
else
|
163
|
+
puts "Putting (#{job_body}) on tube: #{@tube}"
|
164
|
+
tube.put(job_body)
|
165
|
+
puts "Job was put"
|
166
|
+
end
|
135
167
|
end
|
136
168
|
|
137
169
|
def kill_worker
|
@@ -141,15 +173,23 @@ class BeanstalkCommander
|
|
141
173
|
def put_ayl_job(job_body)
|
142
174
|
raise "Must specify a job body to put" unless job_body
|
143
175
|
puts "Putting (#{job_body}) on tube: #{@tube}"
|
144
|
-
pool.
|
145
|
-
|
146
|
-
|
176
|
+
tube = pool.tubes[@tube]
|
177
|
+
if tube.nil?
|
178
|
+
puts "No tube: #{@tube}"
|
179
|
+
else
|
180
|
+
tube.put({:type => :ayl, :code => job_body}.to_json)
|
181
|
+
puts "Job was put"
|
182
|
+
end
|
147
183
|
end
|
148
184
|
|
149
185
|
def put_sleep_job(*args)
|
150
186
|
puts "Putting job on tube '#{@tube}' that will sleep for 20 seconds."
|
151
|
-
pool.
|
152
|
-
|
187
|
+
tube = pool.tubes[@tube]
|
188
|
+
if tube.nil?
|
189
|
+
puts "No tube: #{@tube}"
|
190
|
+
else
|
191
|
+
tube.put(SLEEP_COMMAND.to_json)
|
192
|
+
end
|
153
193
|
end
|
154
194
|
|
155
195
|
#
|
@@ -158,22 +198,31 @@ class BeanstalkCommander
|
|
158
198
|
#
|
159
199
|
def eat_job(*args)
|
160
200
|
# Reserve the next job on the queue
|
161
|
-
pool.
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
201
|
+
tube = pool.tubes[@tube]
|
202
|
+
if tube.nil?
|
203
|
+
puts "No tube: #{@tube}"
|
204
|
+
else
|
205
|
+
job = tube.peek(:ready)
|
206
|
+
if job.nil?
|
207
|
+
puts "No job to eat"
|
208
|
+
else
|
209
|
+
format_job(job)
|
210
|
+
job.delete
|
211
|
+
puts "Deleted job"
|
212
|
+
end
|
213
|
+
end
|
168
214
|
end
|
169
215
|
|
170
|
-
def eat_all_jobs
|
171
|
-
pool.
|
172
|
-
|
173
|
-
puts "
|
174
|
-
|
175
|
-
job.
|
176
|
-
|
216
|
+
def eat_all_jobs(state='ready')
|
217
|
+
tube = pool.tubes[@tube]
|
218
|
+
if tube.nil?
|
219
|
+
puts "No tube: #{@tube}"
|
220
|
+
else
|
221
|
+
while (!(job = tube.peek(state.to_sym)).nil?)
|
222
|
+
format_job(job)
|
223
|
+
job.delete
|
224
|
+
puts "Deleted job"
|
225
|
+
end
|
177
226
|
end
|
178
227
|
end
|
179
228
|
|
@@ -187,12 +236,16 @@ class BeanstalkCommander
|
|
187
236
|
# It is fast and awesome.
|
188
237
|
#
|
189
238
|
def move_jobs(to_tube)
|
190
|
-
pool.
|
191
|
-
|
239
|
+
ttube = pool.tubes[to_tube]
|
240
|
+
if ttube.nil?
|
241
|
+
puts "No To Tube: #{to_tube}"
|
242
|
+
return
|
243
|
+
end
|
244
|
+
pool.tubes.watch!(@tube)
|
192
245
|
while true
|
193
|
-
job = pool.reserve(0)
|
246
|
+
job = pool.tubes.reserve(0)
|
194
247
|
if job
|
195
|
-
|
248
|
+
ttube.put(job.body)
|
196
249
|
job.delete
|
197
250
|
else
|
198
251
|
break
|
@@ -206,7 +259,7 @@ class BeanstalkCommander
|
|
206
259
|
# Returns the connected beanstalk pool
|
207
260
|
#
|
208
261
|
def pool
|
209
|
-
@pool ||=
|
262
|
+
@pool ||= Beaneater.new("#{@host}:#{@port}")
|
210
263
|
end
|
211
264
|
|
212
265
|
#
|