mongodb-mongo 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +24 -6
- data/examples/benchmarks.rb +1 -1
- data/examples/index_test.rb +1 -4
- data/examples/simple.rb +7 -1
- data/lib/mongo/admin.rb +3 -2
- data/lib/mongo/cursor.rb +5 -3
- data/lib/mongo/db.rb +6 -2
- data/mongo-ruby-driver.gemspec +1 -1
- data/tests/test_admin.rb +5 -1
- data/tests/test_db_api.rb +13 -0
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -11,7 +11,8 @@ Start by reading the XGen::Mongo::Driver::Mongo and XGen::Mongo::Driver::DB
|
|
11
11
|
documentation, then move on to XGen::Mongo::Driver::Collection and
|
12
12
|
XGen::Mongo::Driver::Cursor.
|
13
13
|
|
14
|
-
|
14
|
+
Here is a quick code sample. See the files in the "examples" subdirectory for
|
15
|
+
many more.
|
15
16
|
|
16
17
|
require 'mongo'
|
17
18
|
|
@@ -49,17 +50,22 @@ you can install it as a gem from the source by typing
|
|
49
50
|
$ rake gem:install
|
50
51
|
|
51
52
|
|
52
|
-
=
|
53
|
+
= Examples
|
53
54
|
|
54
|
-
|
55
|
-
be running
|
55
|
+
There are many examples in the "examples" subdirectory. Samples include using
|
56
|
+
the driver and using the GridFS class GridStore. Mongo must be running for
|
57
|
+
these examples to work, of course.
|
56
58
|
|
59
|
+
Here's how to start mongo and run the "simple.rb" example:
|
60
|
+
|
61
|
+
$ cd path/to/mongo
|
62
|
+
$ ./mongod run
|
63
|
+
... then in another window ...
|
64
|
+
$ cd path/to/mongo-ruby-driver
|
57
65
|
$ ruby examples/simple.rb
|
58
66
|
|
59
67
|
See also the test code, especially tests/test_db_api.rb.
|
60
68
|
|
61
|
-
For the GridFS class GridStore, see the tests.
|
62
|
-
|
63
69
|
|
64
70
|
= The Driver
|
65
71
|
|
@@ -211,6 +217,18 @@ object or call the :strict= method:
|
|
211
217
|
|
212
218
|
The method DB#strict? returns the current value of that flag.
|
213
219
|
|
220
|
+
== Cursors
|
221
|
+
|
222
|
+
Random cursor fun facts:
|
223
|
+
|
224
|
+
- Cursors are enumerable.
|
225
|
+
|
226
|
+
- The query doesn't get run until you actually attempt to retrieve data from a
|
227
|
+
cursor.
|
228
|
+
|
229
|
+
- Cursors have a to_a method.
|
230
|
+
|
231
|
+
|
214
232
|
|
215
233
|
= Testing
|
216
234
|
|
data/examples/benchmarks.rb
CHANGED
@@ -8,7 +8,7 @@ host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
|
8
8
|
port = ENV['MONGO_RUBY_DRIVER_PORT'] || XGen::Mongo::Driver::Mongo::DEFAULT_PORT
|
9
9
|
|
10
10
|
puts "Connecting to #{host}:#{port}"
|
11
|
-
db = XGen::Mongo::Driver::Mongo.new(host, port).db('ruby-mongo-examples
|
11
|
+
db = XGen::Mongo::Driver::Mongo.new(host, port).db('ruby-mongo-examples')
|
12
12
|
coll = db.collection('test')
|
13
13
|
coll.clear
|
14
14
|
|
data/examples/index_test.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "benchwarmer"
|
3
|
-
|
4
1
|
class Exception
|
5
2
|
def errmsg
|
6
3
|
"%s: %s\n%s" % [self.class, message, (backtrace || []).join("\n") << "\n"]
|
@@ -38,7 +35,7 @@ OBJS_COUNT = 100
|
|
38
35
|
|
39
36
|
puts ">> Generating test data"
|
40
37
|
msgs = %w{hola hello aloha ciao}
|
41
|
-
arr = OBJS_COUNT.
|
38
|
+
arr = (0...OBJS_COUNT).collect {|x| { :number => x, :rndm => (rand(5)+1), :msg => msgs[rand(4)] }}
|
42
39
|
puts "generated"
|
43
40
|
|
44
41
|
puts ">> Inserting data (#{arr.size})"
|
data/examples/simple.rb
CHANGED
@@ -7,11 +7,17 @@ host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
|
|
7
7
|
port = ENV['MONGO_RUBY_DRIVER_PORT'] || XGen::Mongo::Driver::Mongo::DEFAULT_PORT
|
8
8
|
|
9
9
|
puts "Connecting to #{host}:#{port}"
|
10
|
-
db = Mongo.new(host, port).db('ruby-mongo-examples
|
10
|
+
db = Mongo.new(host, port).db('ruby-mongo-examples')
|
11
11
|
coll = db.collection('test')
|
12
|
+
|
13
|
+
# Erase all records from collection, if any
|
12
14
|
coll.clear
|
13
15
|
|
16
|
+
# Insert 3 records
|
14
17
|
3.times { |i| coll.insert({'a' => i+1}) }
|
15
18
|
|
16
19
|
puts "There are #{coll.count()} records in the test collection. Here they are:"
|
17
20
|
coll.find().each { |doc| puts doc.inspect }
|
21
|
+
|
22
|
+
# Destroy the collection
|
23
|
+
coll.drop
|
data/lib/mongo/admin.rb
CHANGED
@@ -70,14 +70,15 @@ module XGen
|
|
70
70
|
end
|
71
71
|
|
72
72
|
# Validate a named collection by raising an exception if there is a
|
73
|
-
# problem or returning
|
73
|
+
# problem or returning an interesting hash (see especially the
|
74
|
+
# 'result' string value) if all is well.
|
74
75
|
def validate_collection(name)
|
75
76
|
doc = @db.db_command(:validate => name)
|
76
77
|
raise "Error with validate command: #{doc.inspect}" unless @db.ok?(doc)
|
77
78
|
result = doc['result']
|
78
79
|
raise "Error with validation data: #{doc.inspect}" unless result.kind_of?(String)
|
79
80
|
raise "Error: invalid collection #{name}: #{doc.inspect}" if result =~ /\b(exception|corrupt)\b/i
|
80
|
-
|
81
|
+
doc
|
81
82
|
end
|
82
83
|
|
83
84
|
end
|
data/lib/mongo/cursor.rb
CHANGED
@@ -42,13 +42,15 @@ module XGen
|
|
42
42
|
|
43
43
|
def closed?; @closed; end
|
44
44
|
|
45
|
-
# Return +true+ if there are
|
46
|
-
# @num_to_return; #each is
|
45
|
+
# Internal method, not for general use. Return +true+ if there are
|
46
|
+
# more records to retrieve. We do not check @num_to_return; #each is
|
47
|
+
# responsible for doing that.
|
47
48
|
def more?
|
48
49
|
num_remaining > 0
|
49
50
|
end
|
50
51
|
|
51
|
-
# Return the next object. Raises an error
|
52
|
+
# Return the next object or nil if there are no more. Raises an error
|
53
|
+
# if necessary.
|
52
54
|
def next_object
|
53
55
|
refill_via_get_more if num_remaining == 0
|
54
56
|
o = @cache.shift
|
data/lib/mongo/db.rb
CHANGED
@@ -288,8 +288,11 @@ module XGen
|
|
288
288
|
|
289
289
|
# Close the connection to the database.
|
290
290
|
def close
|
291
|
-
|
292
|
-
|
291
|
+
if @socket
|
292
|
+
s = @socket
|
293
|
+
@socket = nil
|
294
|
+
s.close
|
295
|
+
end
|
293
296
|
end
|
294
297
|
|
295
298
|
def connected?
|
@@ -426,6 +429,7 @@ module XGen
|
|
426
429
|
connect_to_master if !connected? && @auto_reconnect
|
427
430
|
begin
|
428
431
|
@socket.print(message.buf.to_s)
|
432
|
+
@socket.flush
|
429
433
|
rescue => ex
|
430
434
|
close
|
431
435
|
raise ex
|
data/mongo-ruby-driver.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'mongo'
|
3
|
-
s.version = '0.5.
|
3
|
+
s.version = '0.5.2'
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.summary = 'Simple pure-Ruby driver for the 10gen Mongo DB'
|
6
6
|
s.description = 'A pure-Ruby driver for the 10gen Mongo DB. For more information about Mongo, see http://www.mongodb.org.'
|
data/tests/test_admin.rb
CHANGED
@@ -54,7 +54,11 @@ class AdminTest < Test::Unit::TestCase
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_validate_collection
|
57
|
-
|
57
|
+
doc = @admin.validate_collection(@coll.name)
|
58
|
+
assert_not_nil doc
|
59
|
+
result = doc['result']
|
60
|
+
assert_not_nil result
|
61
|
+
assert_match /firstExtent/, result
|
58
62
|
end
|
59
63
|
|
60
64
|
end
|
data/tests/test_db_api.rb
CHANGED
@@ -405,4 +405,17 @@ class DBAPITest < Test::Unit::TestCase
|
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
|
+
# TODO this test fails with error message "Undefed Before end of object"
|
409
|
+
# That is a database error. The undefined type may go away.
|
410
|
+
|
411
|
+
# def test_insert_undefined
|
412
|
+
# doc = {'undef' => Undefined.new}
|
413
|
+
# @coll.clear
|
414
|
+
# @coll.insert(doc)
|
415
|
+
# p @db.error # DEBUG
|
416
|
+
# assert_equal 1, @coll.count
|
417
|
+
# row = @coll.find().next_object
|
418
|
+
# assert_not_nil row
|
419
|
+
# end
|
420
|
+
|
408
421
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongodb-mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Menard
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-02-03 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|