em-synchrony-moped 1.0.0.beta.3 → 2.0.0.beta.1

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmQwYjRjOGM1NGY4M2ZiNzFhOWQ2NzdkMWVlNDA4OWQyNTY1MmM1Nw==
4
+ ODA5NjIzNDY3MzZiYzk1MTU4ODRmMGE5Mjg3MjcxMWNkYzYxNzAyOA==
5
5
  data.tar.gz: !binary |-
6
- NGViOTBhMjc5M2UyZGI5YWFiODViMWEyY2IzZmI4NzdmMWQ5OTcwYw==
6
+ ZjM0ZTVjMTEyZmY0NWZhYTBjNTgyMTFkY2ZjNTNiODAxNmI1MjA5Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzU4Nzk4YjA1NDFiMjA0NzdmYTI0MjZmNGE0NTY5MWM4ZWE3NmM2MzQ1ZDkx
10
- ZGRiZDc4MDg4NzMzOWNlNWM0ZTgyMzdlNDg0MzJmNzk5NzEwZjAyNDhkNzE4
11
- MmFlZDViYzNlNzExNDJkNjdkNjk1NjgyOWY4OWY3N2Y2MTMzYTI=
9
+ OGM1MWY4YTBjNzY3ZWIzMDhmZjI0ZjBhYWM4NTM1MTU2YzVhMzdkNmJlOWFj
10
+ N2IzNDk1MTFiZGMyMGYyNmUwNmRlMmJkMWUwNzMwNWUyYTEyYTczNTEzNmRh
11
+ YjVkNzU5YjliYzU1Zjc5OTE4YTIxMGM5M2IwZTk5NzNmYjQ0MWE=
12
12
  data.tar.gz: !binary |-
13
- OGJiZjEzMWJiZWUzMGZkNDE0NDBhM2Y4ZjU3NzgzM2Q5MGNhMGFmYWIxZDJk
14
- NWFhNzQwMjBkZmU3NTkyMTg1MTJkMjJiMWE4YzQ1ODJjZDFjZjVhMTE1ZDdi
15
- MWFjOTQxYjkwYjFhMGE1ZjJiNzg0M2E4NTkyNDBlNzkxYjQ0ZWQ=
13
+ OTAzYjhhMGZmMDVkZmFiMzdhNTUzMDA4ZTkwYjM4YWM4N2ZiZDFmOGViZGY3
14
+ ZDQwZTNkOTAwYWVhMjNjNzM4ZDcwNTkyYmJhNGU5OWUzM2QzMmRmMzQyODgy
15
+ ZDY0ZTVmNTU3MDU0NDBlMDVmODc2NTIzZmE4NDdmN2U5ODE3Yzk=
@@ -3,3 +3,4 @@ language: ruby
3
3
  rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
+ - 2.1.1
data/Guardfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- guard 'rspec' do
3
+ guard :rspec, cmd: "bundle exec rspec" do
4
4
  watch(%r{^spec/.+_spec\.rb$})
5
5
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
6
6
  watch('spec/spec_helper.rb') { "spec" }
@@ -2,12 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'em-synchrony-moped'
5
- s.version = "1.0.0.beta.3"
5
+ s.version = "2.0.0.beta.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Adam Lebsack"]
9
9
  s.email = ["alebsack@gmail.com"]
10
-
10
+
11
11
  s.summary = 'Moped driver for EM-Synchrony'
12
12
  s.description = 'EM-Synchrony-Moped is a Moped driver patch for ' +
13
13
  'EM-Synchrony, allowing your asynchronous application use' +
@@ -22,11 +22,11 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.add_runtime_dependency 'eventmachine', '~> 1.0'
24
24
  s.add_runtime_dependency 'em-synchrony', '~> 1.0.3'
25
- s.add_runtime_dependency 'moped', '~> 1.5.1'
25
+ s.add_runtime_dependency 'moped', '~> 2.0.0'
26
26
  s.add_runtime_dependency 'em-resolv-replace'
27
27
 
28
28
  s.add_development_dependency 'rake'
29
- s.add_development_dependency 'rspec'
29
+ s.add_development_dependency 'rspec', '~> 2.14.1'
30
30
  s.add_development_dependency 'guard'
31
31
  s.add_development_dependency 'guard-rspec'
32
32
  s.add_development_dependency 'guard-bundler'
@@ -4,3 +4,4 @@ require 'em-synchrony'
4
4
  require 'em-synchrony/moped/cluster'
5
5
  require 'em-synchrony/moped/node'
6
6
  require 'em-synchrony/moped/connection'
7
+ require 'em-synchrony/moped/address'
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ module Moped
3
+ class Address
4
+
5
+ alias_method :super_resolve, :resolve
6
+ # Override to support non-blocking DNS requests
7
+ def resolve(node)
8
+ return super_resolve(node) unless EventMachine.reactor_thread?
9
+ em_each_address(host).each do |ip|
10
+ if ip =~ Resolv::IPv4::Regex
11
+ @ip ||= ip
12
+ break
13
+ end
14
+ end
15
+ raise Resolv::ResolvError unless @ip
16
+ @resolved ||= "#{ip}:#{port}"
17
+ rescue Timeout::Error, Resolv::ResolvError, SocketError
18
+ Loggable.warn(" MOPED:", "Could not resolve IP for: #{original}", "n/a")
19
+ node.down! and false
20
+ end
21
+
22
+ def em_each_address(value)
23
+ puts "em_each_address: #{value.inspect}"
24
+
25
+ # Lookup in /etc/hosts
26
+ result = []
27
+ @hosts ||= Resolv::Hosts.new
28
+ @hosts.send(:each_address, value) { |x| result << x.to_s }
29
+ return result unless result.empty?
30
+
31
+ # Nothing, hit DNS
32
+ fiber = Fiber.current
33
+ df = EM::DnsResolver.send(:resolve, value)
34
+ df.callback do |a|
35
+ fiber.resume(a)
36
+ end
37
+ df.errback do |*a|
38
+ fiber.resume(Resolv::ResolvError.new(a.inspect))
39
+ end
40
+ result = Fiber.yield
41
+ fail result if result.is_a?(StandardError)
42
+ result
43
+ end
44
+
45
+ end
46
+ end
@@ -9,102 +9,104 @@ module Moped
9
9
  def connect
10
10
  return super_connect unless EventMachine.reactor_thread?
11
11
  if !!options[:ssl]
12
- @sock = Sockets::EmSSL.em_connect(host, port, timeout, options)
12
+ @sock = Socket::EmSSL.em_connect(host, port, timeout, options)
13
13
  else
14
- @sock = Sockets::EmTCP.em_connect(host, port, timeout, options)
14
+ @sock = Socket::EmTCP.em_connect(host, port, timeout, options)
15
15
  end
16
16
  end
17
- end
18
17
 
19
- module Sockets
20
- module Connectable
21
- # Class methods to extend the Connectable Class
22
- module ClassMethods
23
- def em_connect(host, port, timeout, options)
24
- socket = EventMachine.connect(host, port, self) do |c|
25
- c.pending_connect_timeout = timeout
26
- c.options = options
27
- end
28
- # In TCPSocket, new against a closed port raises Errno::ECONNREFUSED.
29
- # In EM, connect against a closed port result in a call to unbind
30
- # with a reason param of Errno::ECONNREFUSED as a class, not an
31
- # instance.
32
- unless socket.sync(:in) # wait for connection
33
- fail socket.unbind_reason.new if socket.unbind_reason.is_a? Class
34
- fail SocketError, socket.unbind_reason
18
+ module Socket
19
+ module Connectable
20
+ # Class methods to extend the Connectable Class
21
+ module ClassMethods
22
+ def em_connect(host, port, timeout, options)
23
+ socket = EventMachine.connect(host, port, self) do |c|
24
+ c.pending_connect_timeout = timeout
25
+ c.options = options
26
+ end
27
+ # In TCPSocket, new against a closed port raises Errno::ECONNREFUSED.
28
+ # In EM, connect against a closed port result in a call to unbind
29
+ # with a reason param of Errno::ECONNREFUSED as a class, not an
30
+ # instance.
31
+ unless socket.sync(:in) # wait for connection
32
+ fail socket.unbind_reason.new if socket.unbind_reason.is_a? Class
33
+ fail SocketError, socket.unbind_reason
34
+ end
35
+ socket
36
+ rescue Errno::ETIMEDOUT
37
+ raise Errors::ConnectionFailure,
38
+ "Timed out connection to Mongo on #{host}:#{port}"
39
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::EPIPE,
40
+ Errno::ECONNRESET, IOError => error
41
+ fail Errors::ConnectionFailure,
42
+ "#{host}:#{port}: #{error.class.name} (#{error.errno}): " +
43
+ "#{error.message}"
44
+ rescue SocketError => error
45
+ fail Errors::ConnectionFailure,
46
+ "#{host}:#{port}: #{error.class.name}: #{error.message}"
35
47
  end
36
- socket
37
- rescue Errno::ETIMEDOUT
38
- raise Errors::ConnectionFailure,
39
- "Timed out connection to Mongo on #{host}:#{port}"
40
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::EPIPE,
41
- Errno::ECONNRESET, IOError => error
42
- fail Errors::ConnectionFailure,
43
- "#{host}:#{port}: #{error.class.name} (#{error.errno}): " +
44
- "#{error.message}"
45
- rescue SocketError => error
46
- fail Errors::ConnectionFailure,
47
- "#{host}:#{port}: #{error.class.name}: #{error.message}"
48
48
  end
49
49
  end
50
- end
51
50
 
52
- # The EM-Synchrony flavor of Moped::Sockets::TCP
53
- class EmTCP < EventMachine::Synchrony::TCPSocket
54
- include Connectable
55
- attr_accessor :options
56
- def alive?
57
- !closed?
51
+ # The EM-Synchrony flavor of Moped::Socket::TCP
52
+ class EmTCP < EventMachine::Synchrony::TCPSocket
53
+ include Connectable
54
+ attr_accessor :options
55
+ def alive?
56
+ !closed?
57
+ end
58
58
  end
59
- end
60
59
 
61
- # The EM-Synchrony flavor of Moped::Sockets::SSL
62
- class EmSSL < EmTCP
63
- def connection_completed
64
- @verified = false
65
- @cert_store = ssl_options.delete(:cert_store)
66
- @cert_store ||= OpenSSL::X509::Store.new
67
- if (cert_file = ssl_options.delete(:verify_cert))
68
- @cert_store.add_file(cert_file)
60
+ # The EM-Synchrony flavor of Moped::Socket::SSL
61
+ class EmSSL < EmTCP
62
+ def connection_completed
63
+ @verified = false
64
+ @cert_store = ssl_options.delete(:cert_store)
65
+ @cert_store ||= OpenSSL::X509::Store.new
66
+ if (cert_file = ssl_options.delete(:verify_cert))
67
+ @cert_store.add_file(cert_file)
68
+ end
69
+ start_tls(ssl_options)
69
70
  end
70
- start_tls(ssl_options)
71
- end
72
71
 
73
- def ssl_verify_peer(pem)
74
- return true unless ssl_options[:verify_peer]
75
- if (cert = certificate(pem)) && @cert_store.verify(cert)
76
- # bypass hostname checking for this cert if it's a CA
77
- return true if cert.extensions.find do |e|
78
- e.oid == 'basicConstraints' && e.value == 'CA:TRUE'
72
+ def ssl_verify_peer(pem)
73
+ return true unless ssl_options[:verify_peer]
74
+ if (cert = certificate(pem)) && @cert_store.verify(cert)
75
+ # bypass hostname checking for this cert if it's a CA
76
+ return true if cert.extensions.find do |e|
77
+ e.oid == 'basicConstraints' && e.value == 'CA:TRUE'
78
+ end
79
+
80
+ @verified = true if (host = ssl_options[:verify_host]) &&
81
+ OpenSSL::SSL.verify_certificate_identity(cert, host)
79
82
  end
80
83
 
81
- @verified = true if (host = ssl_options[:verify_host]) &&
82
- OpenSSL::SSL.verify_certificate_identity(cert, host)
84
+ # Always return true. We will evaluate the certificate chain in
85
+ # ssl_handshake_completed.
86
+ true
83
87
  end
84
88
 
85
- # Always return true. We will evaluate the certificate chain in
86
- # ssl_handshake_completed.
87
- true
88
- end
89
-
90
- def ssl_handshake_completed
91
- if ssl_options[:verify_peer] && !@verified
92
- unbind 'Failed to verify SSL certificate of peer'
93
- else
94
- @opening = false
95
- @in_req.succeed self
89
+ def ssl_handshake_completed
90
+ if ssl_options[:verify_peer] && !@verified
91
+ unbind 'Failed to verify SSL certificate of peer'
92
+ else
93
+ @opening = false
94
+ @in_req.succeed self
95
+ end
96
96
  end
97
- end
98
97
 
99
- private
98
+ private
100
99
 
101
- def ssl_options
102
- @ssl_options ||= @options[:ssl] == true ? {} : @options[:ssl] || {}
103
- end
100
+ def ssl_options
101
+ @ssl_options ||= @options[:ssl] == true ? {} : @options[:ssl] || {}
102
+ end
104
103
 
105
- def certificate(pem)
106
- OpenSSL::X509::Certificate.new(pem)
107
- end
108
- end # EmSSL
104
+ def certificate(pem)
105
+ OpenSSL::X509::Certificate.new(pem)
106
+ end
107
+ end # EmSSL
108
+ end
109
109
  end
110
110
  end
111
+
112
+ puts Moped::Connection::Socket::EmSSL.inspect
@@ -7,39 +7,41 @@ require 'fiber'
7
7
  module Moped
8
8
  # # Our monkey patches to Moped::Node
9
9
  class Node
10
- alias_method :super_parse_address, :parse_address
11
- # Override to support non-blocking DNS requests
12
- def parse_address
13
- return super_parse_address unless EventMachine.reactor_thread?
14
- host, port = address.split(':')
15
- @port = (port || 27_017).to_i
10
+ if Moped::VERSION < "2.0.0"
11
+ alias_method :super_parse_address, :parse_address
12
+ # Override to support non-blocking DNS requests
13
+ def parse_address
14
+ return super_parse_address unless EventMachine.reactor_thread?
15
+ host, port = address.split(':')
16
+ @port = (port || 27_017).to_i
16
17
 
17
- @ip_address = em_lookup_address(host).grep(/(::){0}/).first
18
- fail SocketError unless @ip_address
19
- @resolved_address = "#{@ip_address}:#{@port}"
20
- rescue Resolv::ResolvError
21
- raise SocketError
22
- end
18
+ @ip_address = em_lookup_address(host).grep(/(::){0}/).first
19
+ fail SocketError unless @ip_address
20
+ @resolved_address = "#{@ip_address}:#{@port}"
21
+ rescue Resolv::ResolvError
22
+ raise SocketError
23
+ end
23
24
 
24
- def em_lookup_address(value)
25
- # Lookup in /etc/hosts
26
- result = []
27
- @hosts ||= Resolv::Hosts.new
28
- @hosts.send(:each_address, value) { |x| result << x.to_s if x !~ /::/ }
29
- return result unless result.empty?
25
+ def em_lookup_address(value)
26
+ # Lookup in /etc/hosts
27
+ result = []
28
+ @hosts ||= Resolv::Hosts.new
29
+ @hosts.send(:each_address, value) { |x| result << x.to_s if x !~ /::/ }
30
+ return result unless result.empty?
30
31
 
31
- # Nothing, hit DNS
32
- fiber = Fiber.current
33
- df = EM::DnsResolver.send(:resolve, value)
34
- df.callback do |a|
35
- fiber.resume(a)
36
- end
37
- df.errback do |*a|
38
- fiber.resume(Resolv::ResolvError.new(a.inspect))
32
+ # Nothing, hit DNS
33
+ fiber = Fiber.current
34
+ df = EM::DnsResolver.send(:resolve, value)
35
+ df.callback do |a|
36
+ fiber.resume(a)
37
+ end
38
+ df.errback do |*a|
39
+ fiber.resume(Resolv::ResolvError.new(a.inspect))
40
+ end
41
+ result = Fiber.yield
42
+ fail result if result.is_a?(StandardError)
43
+ result
39
44
  end
40
- result = Fiber.yield
41
- fail result if result.is_a?(StandardError)
42
- result
43
45
  end
44
46
  end
45
47
  end
@@ -6,7 +6,7 @@ require 'em-synchrony/moped'
6
6
 
7
7
  describe Moped::Connection do
8
8
  it 'should have patches included' do
9
- expect { Moped::Sockets::EmTCP }.not_to raise_error
9
+ expect { Moped::Connection::Socket::EmTCP }.not_to raise_error
10
10
  end
11
11
 
12
12
  let(:mongod_options) { {} }
@@ -51,7 +51,7 @@ describe Moped::Connection do
51
51
 
52
52
  context 'evented' do
53
53
  include_context 'with em-synchrony'
54
- let(:connection_class) { Moped::Sockets::EmTCP }
54
+ let(:connection_class) { Moped::Connection::Socket::EmTCP }
55
55
  include_context 'common connection'
56
56
  context 'with ssl' do
57
57
  let(:ssl_options) { nil }
@@ -70,7 +70,7 @@ describe Moped::Connection do
70
70
  let(:ssl_options) { nil }
71
71
  let(:options) { {} }
72
72
  it 'should connect (though comms will fail later)' do
73
- expect(conn.connect).to be_a(Moped::Sockets::EmTCP)
73
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmTCP)
74
74
  end
75
75
  end
76
76
 
@@ -78,21 +78,21 @@ describe Moped::Connection do
78
78
  context 'when specifying ssl: true' do
79
79
  let(:ssl_options) { true }
80
80
  it 'should connect' do
81
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
81
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
82
82
  end
83
83
  end
84
84
 
85
85
  context 'when specifying ssl: {}' do
86
86
  let(:ssl_options) { {} }
87
87
  it 'should connect' do
88
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
88
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
89
89
  end
90
90
  end
91
91
 
92
92
  context 'when not verifying peer' do
93
93
  let(:ssl_options) { { verify_peer: false } }
94
94
  it 'should connect' do
95
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
95
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
96
96
  end
97
97
  end
98
98
 
@@ -149,7 +149,7 @@ describe Moped::Connection do
149
149
  }
150
150
  end
151
151
  it 'should connect' do
152
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
152
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
153
153
  end
154
154
  end
155
155
  end # 'and a certificate is provided'
@@ -169,21 +169,21 @@ describe Moped::Connection do
169
169
  context 'when specifying ssl: true' do
170
170
  let(:ssl_options) { true }
171
171
  it 'should connect' do
172
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
172
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
173
173
  end
174
174
  end
175
175
 
176
176
  context 'when specifying ssl: {}' do
177
177
  let(:ssl_options) { {} }
178
178
  it 'should connect' do
179
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
179
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
180
180
  end
181
181
  end
182
182
 
183
183
  context 'when not verifying peer' do
184
184
  let(:ssl_options) { { verify_peer: false } }
185
185
  it 'should connect' do
186
- expect(conn.connect).to be_a(Moped::Sockets::EmSSL)
186
+ expect(conn.connect).to be_a(Moped::Connection::Socket::EmSSL)
187
187
  end
188
188
  end
189
189
 
@@ -255,7 +255,7 @@ describe Moped::Connection do
255
255
 
256
256
  context 'threaded' do
257
257
  include_context 'without em-synchrony'
258
- let(:connection_class) { Moped::Sockets::TCP }
258
+ let(:connection_class) { Moped::Connection::Socket::TCP }
259
259
  include_context 'common connection'
260
260
  end
261
261
 
@@ -36,7 +36,7 @@ module Moped
36
36
  else
37
37
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
38
38
  def deserialize_#{name}(buffer)
39
- self.#{name} = BSON::Document.deserialize(buffer)
39
+ self.#{name} = BSON::Document.from_bson(buffer)
40
40
  end
41
41
  RUBY
42
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-synchrony-moped
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta.3
4
+ version: 2.0.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Lebsack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-19 00:00:00.000000000 Z
11
+ date: 2014-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 1.5.1
47
+ version: 2.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 1.5.1
54
+ version: 2.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: em-resolv-replace
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 2.14.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 2.14.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: guard
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -209,6 +209,7 @@ files:
209
209
  - Rakefile
210
210
  - em-synchrony-moped.gemspec
211
211
  - lib/em-synchrony/moped.rb
212
+ - lib/em-synchrony/moped/address.rb
212
213
  - lib/em-synchrony/moped/cluster.rb
213
214
  - lib/em-synchrony/moped/connection.rb
214
215
  - lib/em-synchrony/moped/node.rb
@@ -243,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
244
  version: '0'
244
245
  requirements: []
245
246
  rubyforge_project:
246
- rubygems_version: 2.1.7
247
+ rubygems_version: 2.2.2
247
248
  signing_key:
248
249
  specification_version: 4
249
250
  summary: Moped driver for EM-Synchrony
@@ -259,4 +260,3 @@ test_files:
259
260
  - spec/ssl/untrusted.key
260
261
  - spec/support/contexts.rb
261
262
  - spec/support/simulated_mongod.rb
262
- has_rdoc: