asir_beanstalk 1.1.4 → 1.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/Changelog +5 -0
- data/asir_beanstalk.gemspec +1 -1
- data/lib/asir/transport/beanstalk.rb +30 -14
- data/lib/asir_beanstalk/version.rb +1 -1
- data/spec/beanstalk_spec.rb +36 -0
- data/spec/spec_helper.rb +6 -1
- metadata +8 -6
data/Changelog
CHANGED
data/asir_beanstalk.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency "asir", "~> 1.1.
|
21
|
+
gem.add_dependency "asir", "~> 1.1.7"
|
22
22
|
|
23
23
|
gem.add_development_dependency 'rake', '>= 0.9.0'
|
24
24
|
gem.add_development_dependency 'rspec', '~> 2.12.0'
|
@@ -5,26 +5,40 @@ module ASIR
|
|
5
5
|
# !SLIDE
|
6
6
|
# Beanstalk Transport
|
7
7
|
class Beanstalk < TcpSocket
|
8
|
-
|
9
|
-
|
10
|
-
attr_accessor :tube, :priority, :delay, :ttr
|
8
|
+
attr_accessor :tube, :tube_default
|
9
|
+
attr_accessor :priority, :delay, :ttr
|
11
10
|
|
12
11
|
def initialize *args
|
13
|
-
self.
|
14
|
-
|
12
|
+
self.scheme_default ||= 'beanstalk'
|
13
|
+
self.host_default ||= '127.0.0.1'
|
14
|
+
self.port_default ||= 11300
|
15
|
+
self.tube_default ||= 'asir'
|
15
16
|
@priority ||= 0
|
16
17
|
@delay ||= 0
|
17
18
|
@ttr ||= 600
|
18
19
|
super
|
19
20
|
end
|
20
21
|
|
22
|
+
def tube
|
23
|
+
@tube ||=
|
24
|
+
@uri && (
|
25
|
+
p = _uri.path.sub(%r{\A/}, '')
|
26
|
+
p = nil if p.empty?
|
27
|
+
p
|
28
|
+
) || tube_default
|
29
|
+
end
|
30
|
+
|
31
|
+
def path_default
|
32
|
+
"/#{tube}"
|
33
|
+
end
|
34
|
+
|
21
35
|
# !SLIDE
|
22
36
|
# Sends the encoded Message payload String.
|
23
37
|
def _send_message message, message_payload
|
24
38
|
stream.with_stream! do | s |
|
25
39
|
begin
|
26
|
-
match =
|
27
|
-
_beanstalk(s,
|
40
|
+
match =
|
41
|
+
_beanstalk(s,
|
28
42
|
"put #{message[:beanstalk_priority] || @priority} #{message[:beanstalk_delay] || @delay} #{message[:beanstalk_ttr] || @ttr} #{message_payload.size}\r\n",
|
29
43
|
/\AINSERTED (\d+)\r\n\Z/,
|
30
44
|
message_payload)
|
@@ -45,12 +59,12 @@ module ASIR
|
|
45
59
|
def _receive_message channel, additional_data
|
46
60
|
channel.with_stream! do | stream |
|
47
61
|
begin
|
48
|
-
match =
|
62
|
+
match =
|
49
63
|
_beanstalk(stream,
|
50
64
|
RESERVE,
|
51
65
|
/\ARESERVED (\d+) (\d+)\r\n\Z/)
|
52
66
|
additional_data[:beanstalk_job_id] = match[1].to_i
|
53
|
-
additional_data[:beanstalk_message_size] =
|
67
|
+
additional_data[:beanstalk_message_size] =
|
54
68
|
size = match[2].to_i
|
55
69
|
message_payload = stream.read(size)
|
56
70
|
_read_line_and_expect! stream, /\A\r\n\Z/
|
@@ -72,7 +86,7 @@ module ASIR
|
|
72
86
|
# There is a possibility here the following could happen:
|
73
87
|
#
|
74
88
|
# _receive_message
|
75
|
-
# channel == #<Channel:1>
|
89
|
+
# channel == #<Channel:1>
|
76
90
|
# channel.stream == #<TCPSocket:1234>
|
77
91
|
# end
|
78
92
|
# ...
|
@@ -80,7 +94,7 @@ module ASIR
|
|
80
94
|
# channel.stream.close
|
81
95
|
# channel.stream = nil
|
82
96
|
# ...
|
83
|
-
# _send_result
|
97
|
+
# _send_result
|
84
98
|
# channel == #<Channel:1>
|
85
99
|
# channel.stream == #<TCPSocket:5678> # NEW CONNECTION
|
86
100
|
# stream.write "delete #{job_id}"
|
@@ -131,6 +145,8 @@ module ASIR
|
|
131
145
|
match
|
132
146
|
end
|
133
147
|
|
148
|
+
LINE_TERMINATOR = "\r\n".freeze
|
149
|
+
|
134
150
|
def _after_connect! stream
|
135
151
|
if @tube
|
136
152
|
_beanstalk(stream,
|
@@ -148,7 +164,7 @@ module ASIR
|
|
148
164
|
:try_sleep_increment => 0.1,
|
149
165
|
:try_sleep_max => 10) do | stream |
|
150
166
|
if @tube
|
151
|
-
_beanstalk(stream,
|
167
|
+
_beanstalk(stream,
|
152
168
|
"watch #{@tube}\r\n",
|
153
169
|
/\AWATCHING (\d+)\r\n\Z/)
|
154
170
|
end
|
@@ -173,8 +189,8 @@ module ASIR
|
|
173
189
|
end
|
174
190
|
|
175
191
|
def _start_conduit!
|
176
|
-
|
177
|
-
cmd = "beanstalkd #{
|
192
|
+
opt = host ? "-l #{host} " : ""
|
193
|
+
cmd = "beanstalkd #{opt}-p #{port}"
|
178
194
|
$stderr.puts " #{cmd}" if @conduit_options[:verbose]
|
179
195
|
exec(cmd)
|
180
196
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "ASIR::Transport::Beanstalk" do
|
4
|
+
attr_accessor :t
|
5
|
+
|
6
|
+
it "should default to localhost:11300" do
|
7
|
+
t.host.should == '127.0.0.1'
|
8
|
+
t.host_default.should == '127.0.0.1'
|
9
|
+
t.port.should == 11300
|
10
|
+
t.port_default.should == 11300
|
11
|
+
t.tube.should == 'asir'
|
12
|
+
t.tube_default.should == 'asir'
|
13
|
+
t.path.should == '/asir'
|
14
|
+
t.uri.should == 'beanstalk://127.0.0.1:11300/asir'
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return a #host, #port, #tube based on #uri" do
|
18
|
+
t.uri = "beanstalk://host:12345/tube"
|
19
|
+
t.scheme.should == 'beanstalk'
|
20
|
+
t.host.should == 'host'
|
21
|
+
t.port.should == 12345
|
22
|
+
t.tube.should == 'tube'
|
23
|
+
t.path.should == '/tube'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return a #uri based on #host, #port, #tube" do
|
27
|
+
t.host = 'host'
|
28
|
+
t.port = 12345
|
29
|
+
t.tube = 'tube'
|
30
|
+
t.uri.should == "beanstalk://host:12345/tube"
|
31
|
+
end
|
32
|
+
|
33
|
+
before :each do
|
34
|
+
@t = ASIR::Transport::Beanstalk.new
|
35
|
+
end
|
36
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
3
|
|
4
|
-
|
4
|
+
if p = ENV['ASIR_LIB_PATH']
|
5
|
+
$:.unshift File.expand_path(p)
|
6
|
+
else
|
7
|
+
gem 'asir'
|
8
|
+
end
|
5
9
|
require 'asir'
|
10
|
+
require 'asir/transport/beanstalk'
|
6
11
|
|
7
12
|
module ASIR
|
8
13
|
module Test
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asir_beanstalk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asir
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.1.
|
21
|
+
version: 1.1.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.1.
|
29
|
+
version: 1.1.7
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/asir/transport/beanstalk.rb
|
103
103
|
- lib/asir_beanstalk.rb
|
104
104
|
- lib/asir_beanstalk/version.rb
|
105
|
+
- spec/beanstalk_spec.rb
|
105
106
|
- spec/example_spec.rb
|
106
107
|
- spec/spec_helper.rb
|
107
108
|
homepage: http://github.com/kstephens/abstracting_services_in_ruby
|
@@ -118,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
119
|
version: '0'
|
119
120
|
segments:
|
120
121
|
- 0
|
121
|
-
hash:
|
122
|
+
hash: 1666542740013907559
|
122
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
124
|
none: false
|
124
125
|
requirements:
|
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
128
|
version: '0'
|
128
129
|
segments:
|
129
130
|
- 0
|
130
|
-
hash:
|
131
|
+
hash: 1666542740013907559
|
131
132
|
requirements: []
|
132
133
|
rubyforge_project:
|
133
134
|
rubygems_version: 1.8.24
|
@@ -135,5 +136,6 @@ signing_key:
|
|
135
136
|
specification_version: 3
|
136
137
|
summary: Beanstalkd transport for ASIR
|
137
138
|
test_files:
|
139
|
+
- spec/beanstalk_spec.rb
|
138
140
|
- spec/example_spec.rb
|
139
141
|
- spec/spec_helper.rb
|