mongoo 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,15 @@
1
1
  == Changelog
2
2
 
3
+ === 0.2.2
4
+
5
+ * async mode works again, but now you have to manually require:
6
+
7
+ require "mongoo/async"
8
+ Mongoo.conn = Mongo::Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
9
+ Mongoo.db_name = "mongoo-test"
10
+
11
+ see test_async.rb for an example.
12
+
3
13
  === 0.2.1
4
14
 
5
15
  * Identity Map now also stores results from find.to_a, find.each and find.next
data/README.rdoc CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  == Changelog
4
4
 
5
+ === 0.2.2
6
+
7
+ * async mode works again, but now you have to manually require:
8
+
9
+ require "mongoo/async"
10
+ Mongoo.conn = Mongo::Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
11
+ Mongoo.db_name = "mongoo-test"
12
+
13
+ see test_async.rb for an example.
14
+
15
+ === 0.2.1
16
+
17
+ * Identity Map now also stores results from find.to_a, find.each and find.next
18
+
5
19
  === 0.2.0
6
20
 
7
21
  * Depends on mongo gem >= 1.3.1
data/Rakefile CHANGED
@@ -33,6 +33,12 @@ Rake::TestTask.new(:test) do |test|
33
33
  test.verbose = true
34
34
  end
35
35
 
36
+ Rake::TestTask.new(:test_async) do |test|
37
+ test.libs << 'lib' << 'test'
38
+ test.pattern = 'test/**/test_async*.rb'
39
+ test.verbose = true
40
+ end
41
+
36
42
  require 'rcov/rcovtask'
37
43
  Rcov::RcovTask.new do |test|
38
44
  test.libs << 'test'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/lib/mongoo.rb CHANGED
@@ -4,14 +4,16 @@ module Mongoo
4
4
 
5
5
  class << self
6
6
  attr_accessor :conn, :db_name, :verbose_debug
7
+
8
+ def mode
9
+ :sync
10
+ end
7
11
  end
8
12
  end
9
13
 
10
14
  require "forwardable"
11
15
  require "mongo"
12
16
 
13
- require "mongoo/async"
14
-
15
17
  require "active_support/core_ext"
16
18
  require "active_model"
17
19
 
data/lib/mongoo/async.rb CHANGED
@@ -1,41 +1,36 @@
1
- if ENV["MONGOO_ASYNC"] == "1" || (ENV["MONGOO_SYNC"] != "1" && (defined?(EM) && EM.reactor_running?))
2
- require "em-synchrony"
3
- require "em-synchrony/tcpsocket"
4
- module Mongo
5
- class Connection
6
- EMTCPSocket = ::EventMachine::Synchrony::TCPSocket
1
+ require "em-synchrony"
2
+ require "em-synchrony/tcpsocket"
7
3
 
8
- def check_is_master(node)
9
- begin
10
- host, port = *node
11
- socket = EMTCPSocket.new(host, port)
12
- socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
13
-
14
- config = self['admin'].command({:ismaster => 1}, :socket => socket)
15
- rescue OperationFailure, SocketError, SystemCallError, IOError => ex
16
- close
17
- ensure
18
- socket.close if socket
19
- end
4
+ module Mongoo
5
+ def self.suppress_warnings
6
+ original_verbosity = $VERBOSE
7
+ $VERBOSE = nil
8
+ result = yield
9
+ $VERBOSE = original_verbosity
10
+ return result
11
+ end
12
+ end
20
13
 
21
- config
22
- end
23
- end
14
+ module Mongoo
15
+ def self.mode
16
+ :async
24
17
  end
18
+ end
25
19
 
26
- module Mongoo
27
- def self.mode
28
- :async
29
- end
20
+ module Mongo
21
+ class Pool
22
+ Mongoo.suppress_warnings { TCPSocket = ::EventMachine::Synchrony::TCPSocket }
30
23
  end
24
+ end
31
25
 
32
- puts "* Mongoo Running in Asynchronous Mode" if ENV["MONGOO_DEBUG"] == "1"
33
- else
34
- module Mongoo
35
- def self.mode
36
- :sync
37
- end
26
+ module Mongo
27
+ class Connection
28
+ Mongoo.suppress_warnings { TCPSocket = ::EventMachine::Synchrony::TCPSocket }
38
29
  end
39
-
40
- puts "* Mongoo Running in Synchronous Mode" if ENV["MONGOO_DEBUG"] == "1"
41
- end
30
+ end
31
+
32
+ if ENV["MONGOO_DEBUG"] == "1"
33
+ puts "* Mongoo Running in Asynchronous Mode"
34
+ puts " ==> Mongo::Pool::TCPSocket: #{Mongo::Pool::TCPSocket.to_s}"
35
+ puts " ==> Mongo::Connection::TCPSocket: #{Mongo::Pool::TCPSocket.to_s}"
36
+ end
data/mongoo.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoo}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Myles"]
@@ -52,6 +52,7 @@ Gem::Specification.new do |s|
52
52
  s.test_files = [
53
53
  "test/helper.rb",
54
54
  "test/test_activemodel.rb",
55
+ "test/test_async.rb",
55
56
  "test/test_identity_map.rb",
56
57
  "test/test_mongohash.rb",
57
58
  "test/test_mongoo.rb"
data/test/helper.rb CHANGED
@@ -2,7 +2,8 @@ require 'rubygems'
2
2
  require 'bundler'
3
3
  begin
4
4
  groups = [:default, :development]
5
- if defined?(EM) && EM.reactor_running?
5
+
6
+ if ENV["MONGOO_ASYNC"]
6
7
  groups << :async
7
8
  else
8
9
  groups << :sync
@@ -20,7 +21,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
20
21
  $LOAD_PATH.unshift(File.dirname(__FILE__))
21
22
  require 'mongoo'
22
23
 
23
- #Mongoo.config = {host: "127.0.0.1", port: 27017, db: 'mongoo-test'}
24
24
  Mongoo.conn = Mongo::Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
25
25
  Mongoo.db_name = "mongoo-test"
26
26
 
@@ -65,4 +65,4 @@ class TvShow < Mongoo::Base
65
65
  end
66
66
 
67
67
  class Test::Unit::TestCase
68
- end
68
+ end
@@ -0,0 +1,41 @@
1
+ if ENV["MONGOO_ASYNC"]
2
+
3
+ require 'helper'
4
+ require "mongoo/async"
5
+
6
+ class TestAsync < Test::Unit::TestCase
7
+
8
+ def setup
9
+ EM.synchrony do
10
+ Mongoo.conn = Mongo::Connection.new("localhost", 27017, :pool_size => 5, :timeout => 5)
11
+ Mongoo.db_name = "mongoo-test"
12
+
13
+ [Person, TvShow, SearchIndex].each do |obj|
14
+ obj.drop
15
+ obj.create_indexes
16
+ end
17
+ EventMachine.stop
18
+ end
19
+ end
20
+
21
+ should "set and get attributes" do
22
+ EM.synchrony do
23
+ p = Person.new("name" => "Ben")
24
+ assert_equal "Ben", p.g(:name)
25
+ assert_equal "Ben", p.get(:name)
26
+ assert_equal "Ben", p.get_attribute(:name)
27
+ p.set("location.city", "San Francisco")
28
+ assert_equal "San Francisco", p.get("location.city")
29
+ p.sets({"location.demographics.crime_rate" => :high, "location.demographics.education_quality" => :low})
30
+ assert_equal({"name"=>"Ben",
31
+ "location.demographics.crime_rate"=>:high}, p.gets(%w(name location.demographics.crime_rate)))
32
+ assert_raise(Mongoo::UnknownAttributeError) { p.set("idontexist", "foo") }
33
+ assert_raise(Mongoo::UnknownAttributeError) { p.get("idontexist") }
34
+ assert_raise(NoMethodError) { p.idontexist }
35
+ assert_raise(NoMethodError) { p.idontexist = "val" }
36
+ EventMachine.stop
37
+ end
38
+ end
39
+ end
40
+
41
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mongoo
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ben Myles
@@ -148,6 +148,7 @@ files:
148
148
  - test/test_identity_map.rb
149
149
  - test/test_mongohash.rb
150
150
  - test/test_mongoo.rb
151
+ - test/test_async.rb
151
152
  has_rdoc: true
152
153
  homepage: http://github.com/benmyles/mongoo
153
154
  licenses:
@@ -162,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
163
  requirements:
163
164
  - - ">="
164
165
  - !ruby/object:Gem::Version
165
- hash: 2078280549170362626
166
+ hash: -1642084642686495680
166
167
  segments:
167
168
  - 0
168
169
  version: "0"
@@ -182,6 +183,7 @@ summary: Object mapper for MongoDB
182
183
  test_files:
183
184
  - test/helper.rb
184
185
  - test/test_activemodel.rb
186
+ - test/test_async.rb
185
187
  - test/test_identity_map.rb
186
188
  - test/test_mongohash.rb
187
189
  - test/test_mongoo.rb