mongoo 0.4.3 → 0.4.4

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/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