asir 1.0.5 → 1.0.6
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/.rspec +1 -0
- data/ChangeLog +9 -0
- data/Gemfile +2 -11
- data/README.textile +6 -0
- data/Rakefile +13 -0
- data/asir.gemspec +27 -23
- data/lib/asir/transport/resque.rb +36 -8
- data/lib/asir/version.rb +1 -1
- data/spec/resque_spec.rb +49 -12
- metadata +70 -4
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color -f d
|
data/ChangeLog
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
2012-11-27 Kurt A. Stephens <ks.github@kurtstephens.com>
|
2
|
+
|
3
|
+
* v1.0.6: New version.
|
4
|
+
* lib/asir/transport/resque.rb: Fixed Resque::Worker initialization.
|
5
|
+
* lib/asir/transport/resque.rb: Support for redis-server 2.6 command line options.
|
6
|
+
* Changelog: Added Changelog
|
7
|
+
* asir.gemspec: Fixed Bundle and gemspec dependencies.
|
8
|
+
* Rakefile: Added rake prereq.
|
9
|
+
|
data/Gemfile
CHANGED
@@ -1,15 +1,6 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
source "http://rubygems.org"
|
3
|
-
gem 'uuid', '~> 2.3.5'
|
4
|
-
# gem 'json', '~> 1.6.5' # Fails to load under jruby 1.6.6
|
5
|
-
gem 'libxml-ruby', '~> 2.2.2'
|
6
|
-
gem 'httpclient', '~> 2.2.4'
|
7
|
-
gem 'zmq', '~> 2.1.4'
|
8
3
|
|
9
|
-
|
10
|
-
|
11
|
-
gem "rspec", "~> 2.0"
|
12
|
-
|
13
|
-
require File.expand_path('../spec/debug_helper', __FILE__)
|
14
|
-
end
|
4
|
+
# Specify your gem's dependencies in asir.gemspec
|
5
|
+
gemspec
|
15
6
|
|
data/README.textile
CHANGED
data/Rakefile
CHANGED
@@ -49,6 +49,19 @@ task :irb do
|
|
49
49
|
sh "irb -Ilib -rasir"
|
50
50
|
end
|
51
51
|
|
52
|
+
######################################################################
|
53
|
+
|
54
|
+
desc "Install system prerequites"
|
55
|
+
task :prereq do
|
56
|
+
case RUBY_PLATFORM
|
57
|
+
when /darwin/i
|
58
|
+
sh "sudo port install zmq22"
|
59
|
+
when /linux/i
|
60
|
+
sh "sudo apt-get install libzmq-dev"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
######################################################################
|
52
65
|
desc "Create slides."
|
53
66
|
task :slides =>
|
54
67
|
[
|
data/asir.gemspec
CHANGED
@@ -1,44 +1,48 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- ruby -*-
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'asir/version'
|
2
6
|
|
3
7
|
Gem::Specification.new do |s|
|
8
|
+
gem = s
|
4
9
|
s.name = %q{asir}
|
5
|
-
s.version =
|
6
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
10
|
+
s.version = ASIR::VERSION
|
7
11
|
s.authors = ["Kurt Stephens"]
|
8
|
-
s.date = %q{2012-11-26}
|
9
|
-
s.description = %q{Abstracting Services in Ruby}
|
10
12
|
s.email = %q{ks.ruby@kurtstephens.com}
|
11
|
-
s.
|
12
|
-
|
13
|
-
]
|
14
|
-
s.files = `git ls-files`.split("\n")
|
15
|
-
s.executables.push(*`git ls-files bin`.split("\n").map{|f| f.gsub('bin/', '')})
|
13
|
+
s.description = %q{Abstracting Services in Ruby}
|
14
|
+
s.summary = %q{Abstracting Services in Ruby}
|
16
15
|
s.homepage = %q{http://github.com/kstephens/abstracting_services_in_ruby}
|
17
|
-
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split($/)
|
18
|
+
s.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
19
|
+
s.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
20
|
s.require_paths = ["lib"]
|
19
|
-
s.rubygems_version = %q{1.3.7}
|
20
|
-
s.summary = %q{Abstracting Services in Ruby}
|
21
|
-
s.test_files = `git ls-files spec`.split("\n")
|
22
21
|
|
23
|
-
s.
|
22
|
+
s.extra_rdoc_files = [ "README.textile" ]
|
23
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
24
|
+
|
25
|
+
if RUBY_PLATFORM !~ /linux/i
|
26
|
+
# see lib/asir/uuid.rb
|
27
|
+
gem.add_dependency "uuid", "~> 2.3.6"
|
28
|
+
end
|
24
29
|
s.add_dependency "redis", "~> 3.0.2"
|
25
30
|
s.add_dependency "resque", "~> 1.23.0"
|
26
31
|
s.add_dependency "httpclient", "~> 2.3.0"
|
27
32
|
s.add_dependency "libxml-ruby", "~> 2.3.3"
|
28
33
|
s.add_dependency "rack", "~> 1.4.1"
|
29
34
|
s.add_dependency "zmq", "~> 2.1.4"
|
35
|
+
s.add_dependency "json", ">= 1.5.3"
|
30
36
|
|
37
|
+
s.add_development_dependency 'rake', '>= 0.9.0'
|
31
38
|
s.add_development_dependency 'rspec', '~> 2.12.0'
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
s.specification_version = 3
|
37
|
-
|
38
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
39
|
-
else
|
40
|
-
end
|
39
|
+
s.add_development_dependency 'simplecov', '>= 0.1'
|
40
|
+
case RUBY_VERSION
|
41
|
+
when /^1\.8/
|
42
|
+
gem.add_development_dependency 'ruby-debug', '>= 0.1'
|
41
43
|
else
|
44
|
+
gem.add_development_dependency 'ruby-debug19', '>= 0.1'
|
42
45
|
end
|
46
|
+
# s.add_development_dependency 'simplecov',
|
43
47
|
end
|
44
48
|
|
@@ -105,7 +105,7 @@ module ASIR
|
|
105
105
|
save = Thread.current[:asir_transport_resque_instance]
|
106
106
|
Thread.current[:asir_transport_resque_instance] = self
|
107
107
|
poll_throttle throttle do
|
108
|
-
$stderr.puts " #{$$} #{self} serve_stream_message!: resque_worker = #{resque_worker} on queues #{resque_worker.queues}" if @verbose >= 3
|
108
|
+
$stderr.puts " #{$$} #{self} serve_stream_message!: resque_worker = #{resque_worker} on queues #{resque_worker.queues.inspect}" if @verbose >= 3
|
109
109
|
if job = resque_worker.reserve
|
110
110
|
$stderr.puts " #{$$} #{self} serve_stream_message! job=#{job.class}:#{job.inspect}" if @verbose >= 2
|
111
111
|
resque_worker.process(job)
|
@@ -167,7 +167,7 @@ module ASIR
|
|
167
167
|
end
|
168
168
|
|
169
169
|
def resque_worker
|
170
|
-
@resque_worker ||= ::Resque::Worker.new(queues_)
|
170
|
+
@resque_worker ||= ::Resque::Worker.new(*queues_)
|
171
171
|
end
|
172
172
|
|
173
173
|
def server_on_start!
|
@@ -195,17 +195,45 @@ module ASIR
|
|
195
195
|
|
196
196
|
#########################################
|
197
197
|
|
198
|
+
@@redis_server_version = nil
|
199
|
+
def redis_server_version
|
200
|
+
@@redis_server_version ||=
|
201
|
+
begin
|
202
|
+
case v = `redis-server --version`
|
203
|
+
when /v=([.0-9]+)/ # 3.x
|
204
|
+
v = $1
|
205
|
+
when / version ([.0-9]+)/ # 2.x
|
206
|
+
v = $1
|
207
|
+
else
|
208
|
+
v = 'UNKNOWN'
|
209
|
+
end
|
210
|
+
v
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
198
214
|
def _start_conduit!
|
199
215
|
@redis_dir ||= "/tmp"
|
200
216
|
@redis_conf ||= "#{@redis_dir}/asir-redis-#{port}.conf"
|
201
217
|
@redis_log ||= "#{@redis_dir}/asir-redis-#{port}.log"
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
218
|
+
@redis_cmd = [ 'redis-server' ]
|
219
|
+
case redis_server_version
|
220
|
+
when /^2\.4/
|
221
|
+
::File.open(@redis_conf, "w+") do | out |
|
222
|
+
out.puts "daemonize no"
|
223
|
+
out.puts "port #{port}"
|
224
|
+
out.puts "loglevel warning"
|
225
|
+
out.puts "logfile #{@redis_log}"
|
226
|
+
end
|
227
|
+
@redis_cmd << @redis_conf
|
228
|
+
else
|
229
|
+
@redis_cmd <<
|
230
|
+
'--port' << port <<
|
231
|
+
'--loglevel' << 'warning' <<
|
232
|
+
'--logfile' << @redis_log
|
207
233
|
end
|
208
|
-
|
234
|
+
@redis_cmd.map! { | x | x.to_s }
|
235
|
+
# $stderr.puts " redis_cmd = #{@redis_cmd * ' '}" if @verbose >= 1
|
236
|
+
exec *@redis_cmd
|
209
237
|
end
|
210
238
|
end
|
211
239
|
# !SLIDE END
|
data/lib/asir/version.rb
CHANGED
data/spec/resque_spec.rb
CHANGED
@@ -4,8 +4,33 @@ gem 'resque'
|
|
4
4
|
require 'asir'
|
5
5
|
require 'asir/transport/resque'
|
6
6
|
require 'asir/coder/marshal'
|
7
|
+
require 'timeout'
|
7
8
|
|
8
9
|
describe "ASIR::Transport::Resque" do
|
10
|
+
it "should be able to start/stop redis" do
|
11
|
+
with_cleanup! do
|
12
|
+
create_transport!
|
13
|
+
pid = Process.fork do
|
14
|
+
# exec "false" # simulate failure to start.
|
15
|
+
transport._start_conduit!
|
16
|
+
end
|
17
|
+
sleep 1
|
18
|
+
Process.kill('TERM', pid)
|
19
|
+
sleep 1
|
20
|
+
wpid, status = nil, nil
|
21
|
+
Timeout.timeout(5) do
|
22
|
+
wpid, status = Process.waitpid2(pid, Process::WUNTRACED)
|
23
|
+
end
|
24
|
+
# puts status.inspect
|
25
|
+
wpid.should == pid
|
26
|
+
status.stopsig.should == nil
|
27
|
+
status.termsig.should == nil
|
28
|
+
status.exited?.should == true
|
29
|
+
status.exitstatus.should == 0
|
30
|
+
status.success?.should == true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
9
34
|
it "should process and stop! gracefully" do
|
10
35
|
with_cleanup! do
|
11
36
|
create_transport!
|
@@ -14,12 +39,15 @@ describe "ASIR::Transport::Resque" do
|
|
14
39
|
|
15
40
|
message_count = 0
|
16
41
|
transport.after_receive_message = lambda do | t, message |
|
17
|
-
|
42
|
+
message_count += 1
|
43
|
+
$stderr.write ">#{message_count}" if verbose
|
18
44
|
if message_count >= 5
|
19
45
|
t.stop!
|
20
46
|
end
|
21
47
|
end
|
22
|
-
|
48
|
+
Timeout.timeout(20) do
|
49
|
+
start_server!
|
50
|
+
end
|
23
51
|
|
24
52
|
message_count.should == 5
|
25
53
|
exceptions.should == [ ]
|
@@ -32,12 +60,15 @@ describe "ASIR::Transport::Resque" do
|
|
32
60
|
message_count = 0
|
33
61
|
lambda do
|
34
62
|
transport.after_receive_message = lambda do | t, message |
|
35
|
-
|
63
|
+
message_count += 1
|
64
|
+
$stderr.write ">#{message_count}" if verbose
|
36
65
|
if message_count >= 10
|
37
66
|
t.stop!
|
38
67
|
end
|
39
68
|
end
|
40
|
-
|
69
|
+
Timeout.timeout(20) do
|
70
|
+
start_server!
|
71
|
+
end
|
41
72
|
end.should raise_error(Redis::CannotConnectError)
|
42
73
|
message_count.should == 0
|
43
74
|
exceptions.should == [ ]
|
@@ -54,7 +85,8 @@ describe "ASIR::Transport::Resque" do
|
|
54
85
|
message_count = 0
|
55
86
|
lambda do
|
56
87
|
transport.after_receive_message = lambda do | t, message |
|
57
|
-
|
88
|
+
message_count += 1
|
89
|
+
$stderr.write ">#{message_count}" if verbose
|
58
90
|
if message_count >= 5
|
59
91
|
stop_client!
|
60
92
|
stop_conduit! :signal => 9
|
@@ -63,7 +95,9 @@ describe "ASIR::Transport::Resque" do
|
|
63
95
|
t.stop!
|
64
96
|
end
|
65
97
|
end
|
66
|
-
|
98
|
+
Timeout.timeout(20) do
|
99
|
+
start_server!
|
100
|
+
end
|
67
101
|
raise "start_server! exited"
|
68
102
|
end.should raise_error(Redis::CannotConnectError)
|
69
103
|
message_count.should == 5
|
@@ -76,7 +110,7 @@ describe "ASIR::Transport::Resque" do
|
|
76
110
|
before :each do
|
77
111
|
@target = ASIR::Test::ResqueTarget.new
|
78
112
|
@exceptions = [ ]
|
79
|
-
@verbose =
|
113
|
+
@verbose = (ENV['ASIR_TEST_VERBOSE'] || 0).to_i > 0
|
80
114
|
end
|
81
115
|
|
82
116
|
def with_cleanup!
|
@@ -91,11 +125,13 @@ describe "ASIR::Transport::Resque" do
|
|
91
125
|
@uri = "redis://localhost:23456"
|
92
126
|
@transport = ASIR::Transport::Resque.new(:uri => @uri)
|
93
127
|
transport.encoder = ASIR::Coder::Marshal.new
|
94
|
-
|
95
|
-
|
96
|
-
|
128
|
+
if verbose
|
129
|
+
transport._logger = $stderr
|
130
|
+
transport._log_enabled = true
|
131
|
+
end
|
132
|
+
ASIR::Client::Proxy.config_callbacks[target.class] = lambda do | proxy |
|
97
133
|
proxy.transport = transport
|
98
|
-
|
134
|
+
end
|
99
135
|
end
|
100
136
|
|
101
137
|
def start_conduit!
|
@@ -115,7 +151,8 @@ describe "ASIR::Transport::Resque" do
|
|
115
151
|
# transport.verbose = 3
|
116
152
|
i = 0
|
117
153
|
loop do
|
118
|
-
|
154
|
+
i += 1
|
155
|
+
$stderr.write "<#{i}" if verbose
|
119
156
|
target.asir.eval! "2 + 2"
|
120
157
|
sleep 0.25
|
121
158
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
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-11-
|
12
|
+
date: 2012-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: uuid
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.3.
|
21
|
+
version: 2.3.6
|
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: 2.3.
|
29
|
+
version: 2.3.6
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: redis
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +123,38 @@ dependencies:
|
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 2.1.4
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: json
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.5.3
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.5.3
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: rake
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 0.9.0
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 0.9.0
|
126
158
|
- !ruby/object:Gem::Dependency
|
127
159
|
name: rspec
|
128
160
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,6 +171,38 @@ dependencies:
|
|
139
171
|
- - ~>
|
140
172
|
- !ruby/object:Gem::Version
|
141
173
|
version: 2.12.0
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: simplecov
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0.1'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0.1'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: ruby-debug19
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0.1'
|
198
|
+
type: :development
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0.1'
|
142
206
|
description: Abstracting Services in Ruby
|
143
207
|
email: ks.ruby@kurtstephens.com
|
144
208
|
executables:
|
@@ -148,6 +212,8 @@ extra_rdoc_files:
|
|
148
212
|
- README.textile
|
149
213
|
files:
|
150
214
|
- .gitignore
|
215
|
+
- .rspec
|
216
|
+
- ChangeLog
|
151
217
|
- Gemfile
|
152
218
|
- README.textile
|
153
219
|
- Rakefile
|