asir 1.1.6 → 1.1.7

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,9 @@
1
+ 2012-12-11 Kurt A. Stephens <ks.github@kurtstephens.com>
2
+
3
+ * v1.1.7: New version.
4
+ * UriConfig: Add #path to generated #uri.
5
+ * XML: Coder::XML moved to asir_xml gem.
6
+
1
7
  2012-12-07 Kurt A. Stephens <ks.github@kurtstephens.com>
2
8
 
3
9
  * v1.1.6: New version.
@@ -1,7 +1,7 @@
1
1
  h1. Abstracting Services in Ruby
2
2
 
3
3
  * Kurt Stephens
4
- * 2010/08/19
4
+ * 2012/12/11
5
5
  * Slides -- "http://kurtstephens.com/pub/abstracting_services_in_ruby/asir.slides/":http://kurtstephens.com/pub/abstracting_services_in_ruby/asir.slides/
6
6
  * Code -- "http://kurtstephens.com/pub/abstracting_services_in_ruby/":http://kurtstephens.com/pub/abstracting_services_in_ruby/
7
7
  * Git -- "http://github.com/kstephens/abstractiing_services_in_ruby":http://github.com/kstephens/abstractiing_services_in_ruby
@@ -36,7 +36,7 @@ h3. Features
36
36
  ** Time-decaying retry and polling logic.
37
37
  * Support for multiple encodings:
38
38
  ** Marshal.
39
- ** XML.
39
+ ** XML. (gem asir_xml)
40
40
  ** JSON.
41
41
  ** YAML.
42
42
  ** Base64.
@@ -51,7 +51,3 @@ h2. Platform support
51
51
  * CRuby 2.0-head
52
52
  * JRuby 1.6.x (with JRUBY_OPTS=--1.9) IN-PROGRESS
53
53
 
54
- h2. Dependencies
55
-
56
- * Requires install of libxml, libxslt for XML support: rake prereq.
57
-
data/Rakefile CHANGED
@@ -51,17 +51,6 @@ end
51
51
 
52
52
  ######################################################################
53
53
 
54
- desc "Install system prerequites"
55
- task :prereq do
56
- case RUBY_PLATFORM
57
- when /darwin/i
58
- sh "sudo port install libxml libxslt"
59
- when /linux/i
60
- sh "sudo apt-get install libxml2-dev libxslt1-dev"
61
- end
62
- end
63
-
64
- ######################################################################
65
54
  desc "Create slides."
66
55
  task :slides =>
67
56
  [
@@ -27,7 +27,6 @@ Gem::Specification.new do |s|
27
27
  gem.add_dependency "uuid", "~> 2.3.6"
28
28
  end
29
29
  s.add_dependency "httpclient", "~> 2.3.0"
30
- s.add_dependency "libxml-ruby", "~> 2.3.3"
31
30
  s.add_dependency "rack", "~> 1.4.1"
32
31
  s.add_dependency "json", ">= 1.5.3"
33
32
 
@@ -9,7 +9,7 @@ module ASIR
9
9
  # !SLIDE
10
10
  # TCP Socket Client
11
11
  def _client_connect!
12
- sock = TCPSocket.open(address, port)
12
+ sock = TCPSocket.open(host, port)
13
13
  end
14
14
 
15
15
  # !SLIDE
@@ -11,7 +11,8 @@ module ASIR
11
11
  alias :address= :host=
12
12
 
13
13
  def uri
14
- @uri ||= "#{scheme}://#{host}:#{port}"
14
+ @uri ||=
15
+ "#{scheme}://#{host}:#{port}#{path}".freeze
15
16
  end
16
17
 
17
18
  def _uri
@@ -22,7 +23,7 @@ module ASIR
22
23
  def scheme
23
24
  @scheme ||=
24
25
  (@uri && _uri.scheme) ||
25
- @scheme_default ||
26
+ scheme_default ||
26
27
  S_TCP
27
28
  end
28
29
  S_TCP = 'tcp'.freeze
@@ -30,7 +31,7 @@ module ASIR
30
31
  def host
31
32
  @host ||=
32
33
  (@uri && _uri.host) ||
33
- @host_default ||
34
+ host_default ||
34
35
  S_LOCALHOST
35
36
  end
36
37
  S_LOCALHOST = '127.0.0.1'.freeze
@@ -38,14 +39,17 @@ module ASIR
38
39
  def port
39
40
  @port ||=
40
41
  (@uri && _uri.port) ||
41
- @port_default ||
42
+ port_default ||
42
43
  (raise Error, "#{self.class}: port not set.")
43
44
  end
44
45
 
45
46
  def path
46
47
  @path ||=
47
- (@uri && _uri.path) ||
48
- @path_default
48
+ (@uri && (
49
+ p = _uri.path
50
+ p = nil if p.empty?
51
+ p)) ||
52
+ path_default
49
53
  end
50
54
  end
51
55
  end
@@ -1,3 +1,3 @@
1
1
  module ASIR
2
- VERSION = "1.1.6"
2
+ VERSION = "1.1.7"
3
3
  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.1.6
4
+ version: 1.1.7
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: uuid
@@ -43,22 +43,6 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 2.3.0
46
- - !ruby/object:Gem::Dependency
47
- name: libxml-ruby
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 2.3.3
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 2.3.3
62
46
  - !ruby/object:Gem::Dependency
63
47
  name: rack
64
48
  requirement: !ruby/object:Gem::Requirement
@@ -296,7 +280,6 @@ files:
296
280
  - spec/thread_pool_spec.rb
297
281
  - spec/thread_variable_spec.rb
298
282
  - spec/transport_spec.rb
299
- - spec/xml_spec.rb
300
283
  - spec/yaml_spec.rb
301
284
  - stylesheets/slides.css
302
285
  homepage: http://github.com/kstephens/abstracting_services_in_ruby
@@ -314,7 +297,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
297
  version: '0'
315
298
  segments:
316
299
  - 0
317
- hash: 4585865116450200509
300
+ hash: -3323359045445920418
318
301
  required_rubygems_version: !ruby/object:Gem::Requirement
319
302
  none: false
320
303
  requirements:
@@ -323,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
323
306
  version: '0'
324
307
  segments:
325
308
  - 0
326
- hash: 4585865116450200509
309
+ hash: -3323359045445920418
327
310
  requirements: []
328
311
  rubyforge_project:
329
312
  rubygems_version: 1.8.24
@@ -342,5 +325,4 @@ test_files:
342
325
  - spec/thread_pool_spec.rb
343
326
  - spec/thread_variable_spec.rb
344
327
  - spec/transport_spec.rb
345
- - spec/xml_spec.rb
346
328
  - spec/yaml_spec.rb
@@ -1,144 +0,0 @@
1
- require File.expand_path('../spec_helper', __FILE__)
2
- require 'asir/coder/xml'
3
-
4
- describe "ASIR::Coder::XML" do
5
- before(:each) do
6
- @enc = ASIR::Coder::XML.new
7
- @dec = @enc.dup
8
- end
9
-
10
- basic_objs = [ ]
11
-
12
- [
13
- nil,
14
- true,
15
- false,
16
- ].each do | x |
17
- basic_objs << x
18
- it "should handle #{x.inspect}" do
19
- xml = @enc.prepare.encode(x)
20
- xml.should == "<#{x.class.name} />"
21
- @dec.prepare.decode(xml).should == x
22
- end
23
- end
24
-
25
- [
26
- 1234,
27
- 1.234,
28
- ].each do | x |
29
- basic_objs << x
30
- it "should handle #{x.inspect}" do
31
- xml = @enc.prepare.encode(x)
32
- xml.should == "<#{x.class.name} v=\"#{x.to_s}\" />"
33
- @dec.prepare.decode(xml).should == x
34
- end
35
- end
36
-
37
- [
38
- :symbol,
39
- ].each do | x |
40
- basic_objs << x
41
- it "should handle #{x.inspect}" do
42
- xml = @enc.prepare.encode(x)
43
- xml.should == "<#{x.class.name} >#{x.to_s}</#{x.class.name}>"
44
- @dec.prepare.decode(xml).should == x
45
- end
46
- end
47
-
48
- [
49
- 'String',
50
- ].each do | x |
51
- basic_objs << x
52
- it "should handle #{x.inspect}" do
53
- xml = @enc.prepare.encode(x)
54
- xml.should == "<#{x.class.name} id=\"1\" >#{x.to_s}</#{x.class.name}>"
55
- @dec.prepare.decode(xml).should == x
56
- end
57
- end
58
-
59
- it "should handle empty Array" do
60
- x = [ ]
61
- xml = @enc.prepare.encode(x)
62
- xml.should == "<#{x.class.name} id=\"1\" ></#{x.class.name}>"
63
- @dec.prepare.decode(xml).should == x
64
- end
65
-
66
- it "should handle Array" do
67
- x = [ *basic_objs ]
68
- xml = @enc.prepare.encode(x)
69
- xml.should =~ %r{\A<#{x.class.name} id=\"1\" ><NilClass /><TrueClass /><FalseClass /><Fixnum v="1234" /><Float v="1.234" /><Symbol >symbol</Symbol><String id=\"[^"]+\" >String</String></#{x.class.name}>\Z} # " emacs
70
- @dec.prepare.decode(xml).should == x
71
- end
72
-
73
- it "should handle empty Hash" do
74
- x = { }
75
- xml = @enc.prepare.encode(x)
76
- xml.should == "<#{x.class.name} id=\"1\" ></#{x.class.name}>"
77
- @dec.prepare.decode(xml).should == x
78
- end
79
-
80
- it "should handle Hash" do
81
- x = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ]
82
- xml = @enc.prepare.encode(x)
83
- xml.should =~ %r{\A<#{x.class.name} id=\"1\" >}
84
- xml.should =~ %r{</#{x.class.name}>\Z}
85
- basic_objs.each do | v |
86
- vx = @enc.dup.encode(v)
87
- vx = vx.gsub(/id="[^"]+"/, 'id="\d+"')
88
- xml.should =~ Regexp.new(vx)
89
- xml.should =~ %r{ >#{v.inspect}</String>}
90
- end
91
- @dec.prepare.decode(xml).should == x
92
- end
93
-
94
- class ASIR::Coder::XML::Test
95
- attr_accessor :a, :h, :o
96
- end
97
-
98
- it "should handle deep objects" do
99
- x = ASIR::Coder::XML::Test.new
100
- x.a = [ *basic_objs ]
101
- x.h = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ]
102
- x.o = ASIR::Coder::XML::Test.new
103
- x.o.a = 123
104
- xml = @enc.prepare.encode(x)
105
- xml.should =~ %r{<#{x.class.name.gsub('::', '.')} id=\"1\" >}
106
- xml.should =~ %r{</#{x.class.name.gsub('::', '.')}>}
107
- y = @dec.prepare.decode(xml)
108
- y.a.should == x.a
109
- y.h.should == x.h
110
- y.o.class.should == ASIR::Coder::XML::Test
111
- y.o.a.should == x.o.a
112
- x.instance_variables.sort { |a, b| a.to_s <=> b.to_s}.should ==
113
- y.instance_variables.sort { | a, b | a.to_s <=> b.to_s }
114
- end
115
-
116
- it "should handle multiple references to same objects." do
117
- x = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ]
118
- y = [ 1, 2 ]
119
- x = [ x, x, y, y ]
120
- xml = @enc.prepare.encode(x)
121
- y = @dec.prepare.decode(xml)
122
- y[0].object_id.should == y[1].object_id
123
- y[2].object_id.should == y[3].object_id
124
- end
125
-
126
- it "should handle self-referencing Array." do
127
- x = [ 1 ]
128
- x << x
129
- xml = @enc.prepare.encode(x)
130
- y = @dec.prepare.decode(xml)
131
- y[0].should == x[0]
132
- y[1].object_id.should == y.object_id
133
- end
134
-
135
- it "should handle self-referencing Hash." do
136
- x = { :a => 1 }
137
- x[:self] = x
138
- xml = @enc.prepare.encode(x)
139
- y = @dec.prepare.decode(xml)
140
- y[:a].should == x[:a]
141
- y[:self].object_id.should == y.object_id
142
- end
143
-
144
- end