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 CHANGED
@@ -1,3 +1,8 @@
1
+ 2012-12-11 Kurt A. Stephens <ks.github@kurtstephens.com>
2
+
3
+ * v1.1.5: New version.
4
+ * Beanstalk: Properly handle uri, host, port, tube.
5
+
1
6
  2012-12-07 Kurt A. Stephens <ks.github@kurtstephens.com>
2
7
 
3
8
  * v1.1.4: New version.
@@ -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.6"
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
- LINE_TERMINATOR = "\r\n".freeze
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.port_default ||= 11300
14
- @tube ||= 'asir'
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
- addr = address ? "-l #{address} " : ""
177
- cmd = "beanstalkd #{addr}-p #{port}"
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
@@ -1,3 +1,3 @@
1
1
  module AsirBeanstalk
2
- VERSION = "1.1.4"
2
+ VERSION = "1.1.5"
3
3
  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
- gem 'asir'
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
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-08 00:00:00.000000000 Z
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.6
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.6
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: -4008377011960426377
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: -4008377011960426377
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