mongoo 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -7,7 +7,6 @@ gem "activesupport", ">= 3.0.3"
7
7
  gem "activemodel", ">= 3.0.3"
8
8
 
9
9
  gem "mongo", "~> 1.3.1"
10
- gem "em-synchrony", "~> 0.2.0", :require => false
11
10
 
12
11
  # Add dependencies to develop your gem here.
13
12
  # Include everything needed to run rake, tests, features, etc.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
data/mongoo.gemspec CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "lib/mongoo.rb",
29
- "lib/mongoo/async.rb",
30
29
  "lib/mongoo/attribute_proxy.rb",
31
30
  "lib/mongoo/attribute_sanitizer.rb",
32
31
  "lib/mongoo/base.rb",
@@ -40,7 +39,6 @@ Gem::Specification.new do |s|
40
39
  "mongoo.gemspec",
41
40
  "test/helper.rb",
42
41
  "test/test_activemodel.rb",
43
- "test/test_async.rb",
44
42
  "test/test_identity_map.rb",
45
43
  "test/test_mongohash.rb",
46
44
  "test/test_mongoo.rb",
@@ -54,7 +52,6 @@ Gem::Specification.new do |s|
54
52
  s.test_files = [
55
53
  "test/helper.rb",
56
54
  "test/test_activemodel.rb",
57
- "test/test_async.rb",
58
55
  "test/test_identity_map.rb",
59
56
  "test/test_mongohash.rb",
60
57
  "test/test_mongoo.rb",
@@ -69,7 +66,6 @@ Gem::Specification.new do |s|
69
66
  s.add_runtime_dependency(%q<activesupport>, [">= 3.0.3"])
70
67
  s.add_runtime_dependency(%q<activemodel>, [">= 3.0.3"])
71
68
  s.add_runtime_dependency(%q<mongo>, ["~> 1.3.1"])
72
- s.add_runtime_dependency(%q<em-synchrony>, ["~> 0.2.0"])
73
69
  s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
74
70
  s.add_development_dependency(%q<shoulda>, [">= 0"])
75
71
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -82,7 +78,6 @@ Gem::Specification.new do |s|
82
78
  s.add_dependency(%q<activesupport>, [">= 3.0.3"])
83
79
  s.add_dependency(%q<activemodel>, [">= 3.0.3"])
84
80
  s.add_dependency(%q<mongo>, ["~> 1.3.1"])
85
- s.add_dependency(%q<em-synchrony>, ["~> 0.2.0"])
86
81
  s.add_dependency(%q<ruby-debug19>, [">= 0"])
87
82
  s.add_dependency(%q<shoulda>, [">= 0"])
88
83
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -96,7 +91,6 @@ Gem::Specification.new do |s|
96
91
  s.add_dependency(%q<activesupport>, [">= 3.0.3"])
97
92
  s.add_dependency(%q<activemodel>, [">= 3.0.3"])
98
93
  s.add_dependency(%q<mongo>, ["~> 1.3.1"])
99
- s.add_dependency(%q<em-synchrony>, ["~> 0.2.0"])
100
94
  s.add_dependency(%q<ruby-debug19>, [">= 0"])
101
95
  s.add_dependency(%q<shoulda>, [">= 0"])
102
96
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mongoo
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.3
5
+ version: 0.4.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ben Myles
@@ -57,20 +57,9 @@ dependencies:
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: em-synchrony
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ~>
66
- - !ruby/object:Gem::Version
67
- version: 0.2.0
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: *id005
71
60
  - !ruby/object:Gem::Dependency
72
61
  name: ruby-debug19
73
- requirement: &id006 !ruby/object:Gem::Requirement
62
+ requirement: &id005 !ruby/object:Gem::Requirement
74
63
  none: false
75
64
  requirements:
76
65
  - - ">="
@@ -78,10 +67,10 @@ dependencies:
78
67
  version: "0"
79
68
  type: :development
80
69
  prerelease: false
81
- version_requirements: *id006
70
+ version_requirements: *id005
82
71
  - !ruby/object:Gem::Dependency
83
72
  name: shoulda
84
- requirement: &id007 !ruby/object:Gem::Requirement
73
+ requirement: &id006 !ruby/object:Gem::Requirement
85
74
  none: false
86
75
  requirements:
87
76
  - - ">="
@@ -89,10 +78,10 @@ dependencies:
89
78
  version: "0"
90
79
  type: :development
91
80
  prerelease: false
92
- version_requirements: *id007
81
+ version_requirements: *id006
93
82
  - !ruby/object:Gem::Dependency
94
83
  name: bundler
95
- requirement: &id008 !ruby/object:Gem::Requirement
84
+ requirement: &id007 !ruby/object:Gem::Requirement
96
85
  none: false
97
86
  requirements:
98
87
  - - ~>
@@ -100,10 +89,10 @@ dependencies:
100
89
  version: 1.0.0
101
90
  type: :development
102
91
  prerelease: false
103
- version_requirements: *id008
92
+ version_requirements: *id007
104
93
  - !ruby/object:Gem::Dependency
105
94
  name: jeweler
106
- requirement: &id009 !ruby/object:Gem::Requirement
95
+ requirement: &id008 !ruby/object:Gem::Requirement
107
96
  none: false
108
97
  requirements:
109
98
  - - ~>
@@ -111,10 +100,10 @@ dependencies:
111
100
  version: 1.5.1
112
101
  type: :development
113
102
  prerelease: false
114
- version_requirements: *id009
103
+ version_requirements: *id008
115
104
  - !ruby/object:Gem::Dependency
116
105
  name: rcov
117
- requirement: &id010 !ruby/object:Gem::Requirement
106
+ requirement: &id009 !ruby/object:Gem::Requirement
118
107
  none: false
119
108
  requirements:
120
109
  - - ">="
@@ -122,10 +111,10 @@ dependencies:
122
111
  version: "0"
123
112
  type: :development
124
113
  prerelease: false
125
- version_requirements: *id010
114
+ version_requirements: *id009
126
115
  - !ruby/object:Gem::Dependency
127
116
  name: perftools.rb
128
- requirement: &id011 !ruby/object:Gem::Requirement
117
+ requirement: &id010 !ruby/object:Gem::Requirement
129
118
  none: false
130
119
  requirements:
131
120
  - - ">="
@@ -133,10 +122,10 @@ dependencies:
133
122
  version: "0"
134
123
  type: :development
135
124
  prerelease: false
136
- version_requirements: *id011
125
+ version_requirements: *id010
137
126
  - !ruby/object:Gem::Dependency
138
127
  name: bson_ext
139
- requirement: &id012 !ruby/object:Gem::Requirement
128
+ requirement: &id011 !ruby/object:Gem::Requirement
140
129
  none: false
141
130
  requirements:
142
131
  - - ~>
@@ -144,7 +133,7 @@ dependencies:
144
133
  version: 1.3.1
145
134
  type: :development
146
135
  prerelease: false
147
- version_requirements: *id012
136
+ version_requirements: *id011
148
137
  description: Simple object mapper for MongoDB
149
138
  email: ben.myles@gmail.com
150
139
  executables: []
@@ -164,7 +153,6 @@ files:
164
153
  - Rakefile
165
154
  - VERSION
166
155
  - lib/mongoo.rb
167
- - lib/mongoo/async.rb
168
156
  - lib/mongoo/attribute_proxy.rb
169
157
  - lib/mongoo/attribute_sanitizer.rb
170
158
  - lib/mongoo/base.rb
@@ -178,7 +166,6 @@ files:
178
166
  - mongoo.gemspec
179
167
  - test/helper.rb
180
168
  - test/test_activemodel.rb
181
- - test/test_async.rb
182
169
  - test/test_identity_map.rb
183
170
  - test/test_mongohash.rb
184
171
  - test/test_mongoo.rb
@@ -197,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
184
  requirements:
198
185
  - - ">="
199
186
  - !ruby/object:Gem::Version
200
- hash: 3510321131763489211
187
+ hash: 2962169118481187052
201
188
  segments:
202
189
  - 0
203
190
  version: "0"
@@ -217,7 +204,6 @@ summary: Object mapper for MongoDB
217
204
  test_files:
218
205
  - test/helper.rb
219
206
  - test/test_activemodel.rb
220
- - test/test_async.rb
221
207
  - test/test_identity_map.rb
222
208
  - test/test_mongohash.rb
223
209
  - test/test_mongoo.rb
data/lib/mongoo/async.rb DELETED
@@ -1,154 +0,0 @@
1
- unless defined?(Mongo)
2
- raise "!! mongoo/async must be loaded AFTER mongo !!"
3
- end
4
-
5
- original_verbosity = $VERBOSE
6
- $VERBOSE = nil
7
-
8
- require 'em-synchrony'
9
- require 'em-synchrony/tcpsocket'
10
- require 'em-synchrony/thread'
11
-
12
- module Mongo
13
-
14
- class Connection
15
- TCPSocket = ::EventMachine::Synchrony::TCPSocket
16
- Mutex = ::EventMachine::Synchrony::Thread::Mutex
17
- ConditionVariable = ::EventMachine::Synchrony::Thread::ConditionVariable
18
- end
19
-
20
- def self.async?
21
- true
22
- end
23
-
24
- end
25
-
26
-
27
- module Mongo
28
- class EMPool
29
- TCPSocket = ::EventMachine::Synchrony::TCPSocket
30
-
31
- attr_accessor :host, :port, :size, :timeout, :safe, :checked_out
32
-
33
- # Create a new pool of connections.
34
- #
35
- def initialize(connection, host, port, opts={})
36
- @connection = connection
37
- @host, @port = host, port
38
-
39
- # # Pool size and timeout.
40
- # @size = opts[:size] || 1
41
- # @timeout = opts[:timeout] || 5.0
42
-
43
- # # Operations to perform on a socket
44
- # @socket_ops = Hash.new { |h, k| h[k] = [] }
45
-
46
- # @all = []
47
- # @reserved = {} # map of in-progress connections
48
- # @available = [] # pool of free connections
49
- # @pending = [] # pending reservations (FIFO)
50
-
51
- # setup_pool!(host, port)
52
- end
53
-
54
- def setup_pool!(host, port)
55
- true
56
- # @size.times do |i|
57
- # sock = checkout_new_socket(host, port)
58
- # @all << sock
59
- # @available << sock
60
- # end
61
- end
62
-
63
- def close
64
- true
65
- # @all.each do |sock|
66
- # begin
67
- # sock.close
68
- # rescue IOError => ex
69
- # warn "IOError when attempting to close socket connected to #{@host}:#{@port}: #{ex.inspect}"
70
- # end
71
- # end
72
- # @host = @port = nil
73
- # @all.clear
74
- # @reserved.clear
75
- # @available.clear
76
- # @pending.clear
77
- end
78
-
79
- # Return a socket to the pool.
80
- def checkin(socket)
81
- socket.close
82
- # fiber = Fiber.current
83
- # @available.push(@reserved.delete(fiber.object_id))
84
- # if pending = @pending.shift
85
- # pending.resume
86
- # end
87
- true
88
- end
89
-
90
- # If a user calls DB#authenticate, and several sockets exist,
91
- # then we need a way to apply the authentication on each socket.
92
- # So we store the apply_authentication method, and this will be
93
- # applied right before the next use of each socket.
94
- def authenticate_existing
95
- true
96
- # @all.each do |socket|
97
- # @socket_ops[socket] << Proc.new do
98
- # @connection.apply_saved_authentication(:socket => socket)
99
- # end
100
- # end
101
- end
102
-
103
- # Store the logout op for each existing socket to be applied before
104
- # the next use of each socket.
105
- def logout_existing(db)
106
- true
107
- # @all.each do |socket|
108
- # @socket_ops[socket] << Proc.new do
109
- # @connection.db(db).issue_logout(:socket => socket)
110
- # end
111
- # end
112
- end
113
-
114
- # Check out an existing socket or create a new socket if the maximum
115
- # pool size has not been exceeded. Otherwise, wait for the next
116
- # available socket.
117
- def checkout
118
- checkout_new_socket(@host, @port)
119
- # fiber = Fiber.current
120
- # #puts "[P: #{@pending.size}, A: #{@available.size}, ALL: #{@all.size}]"
121
- # if socket = @available.pop
122
- # @reserved[fiber.object_id] = socket
123
- # socket
124
- # else
125
- # Fiber.yield @pending.push fiber
126
- # checkout
127
- # end
128
- end
129
-
130
- # Adds a new socket to the pool and checks it out.
131
- #
132
- # This method is called exclusively from #checkout;
133
- # therefore, it runs within a mutex.
134
- def checkout_new_socket(host, port)
135
- # return nil if @all.size >= @size
136
- begin
137
- socket = TCPSocket.new(host, port)
138
- socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
139
- rescue => ex
140
- raise ConnectionFailure, "Failed to connect to host #{@host} and port #{@port}: #{ex}"
141
- end
142
-
143
- # If any saved authentications exist, we want to apply those
144
- # when creating new sockets.
145
- @connection.apply_saved_authentication(:socket => socket)
146
-
147
- socket
148
- end; protected :checkout_new_socket
149
- end # EMPool
150
- end # Mongo
151
-
152
- Mongo::Pool = Mongo::EMPool
153
-
154
- $VERBOSE = original_verbosity
data/test/test_async.rb DELETED
@@ -1,42 +0,0 @@
1
- if ENV["MONGOO_ASYNC"]
2
-
3
- require 'helper'
4
- require "mongoo/async"
5
-
6
- Mongoo.conn_opts = ["localhost", 27017, :pool_size => 5, :timeout => 5]
7
- Mongoo.db_name = "mongoo-test"
8
-
9
- class TestAsync < Test::Unit::TestCase
10
-
11
- def setup
12
- EM.synchrony do
13
-
14
- [Person, TvShow, SearchIndex].each do |obj|
15
- obj.drop
16
- obj.create_indexes
17
- end
18
- EventMachine.stop
19
- end
20
- end
21
-
22
- should "set and get attributes" do
23
- EM.synchrony do
24
- p = Person.new("name" => "Ben")
25
- assert_equal "Ben", p.g(:name)
26
- assert_equal "Ben", p.get(:name)
27
- assert_equal "Ben", p.get_attribute(:name)
28
- p.set("location.city", "San Francisco")
29
- assert_equal "San Francisco", p.get("location.city")
30
- p.sets({"location.demographics.crime_rate" => :high, "location.demographics.education_quality" => :low})
31
- assert_equal({"name"=>"Ben",
32
- "location.demographics.crime_rate"=>:high}, p.gets(%w(name location.demographics.crime_rate)))
33
- assert_raise(Mongoo::UnknownAttributeError) { p.set("idontexist", "foo") }
34
- assert_raise(Mongoo::UnknownAttributeError) { p.get("idontexist") }
35
- assert_raise(NoMethodError) { p.idontexist }
36
- assert_raise(NoMethodError) { p.idontexist = "val" }
37
- EventMachine.stop
38
- end
39
- end
40
- end
41
-
42
- end