mongo-db 0.0.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.
- data/Rakefile +13 -0
- data/lib/mongo_db.rb +3 -0
- data/lib/mongo_db/driver.rb +5 -0
- data/lib/mongo_db/driver/connection.rb +0 -0
- data/lib/mongo_db/driver/database.rb +5 -0
- data/lib/mongo_db/driver/spec.rb +32 -0
- data/lib/mongo_db/gems.rb +2 -0
- data/lib/mongo_db/model.rb +0 -0
- data/readme.md +9 -0
- data/spec/mongo_ext/migration_spec.rb +0 -0
- data/spec/mongo_ext/misc_spec.rb +10 -0
- data/spec/mongo_ext/spec_helper.rb +4 -0
- data/spec/mongo_model/hash/crud_spec.rb +69 -0
- data/spec/mongo_model/model/crud_spec.rb +123 -0
- data/spec/mongo_model/model/query_spec.rb +0 -0
- data/spec/mongo_model/object/callbacks_spec.rb +100 -0
- data/spec/mongo_model/object/crud_shared.rb +53 -0
- data/spec/mongo_model/object/crud_spec.rb +45 -0
- data/spec/mongo_model/object/validation_spec.rb +74 -0
- data/spec/mongo_model/spec_helper.rb +1 -0
- data/spec/query_spec.rb +0 -0
- data/spec/test_spec.rb +5 -0
- metadata +66 -0
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rake_ext'
|
2
|
+
|
3
|
+
project(
|
4
|
+
name: "mongo-db",
|
5
|
+
# official_name: "mongo_db",
|
6
|
+
version: '0.0.1',
|
7
|
+
gem: true,
|
8
|
+
summary: "MongDB ODM. In development, don't use it, come back at 11/8/25",
|
9
|
+
# Very small, schema-less, config-less Ruby ODM for MongoDB",
|
10
|
+
|
11
|
+
author: "Alexey Petrushin",
|
12
|
+
homepage: "http://github.com/alexeypetrushin/mongo_db"
|
13
|
+
)
|
data/lib/mongo_db.rb
ADDED
File without changes
|
@@ -0,0 +1,32 @@
|
|
1
|
+
MONGO_TEST_DATABASE = 'default_test'
|
2
|
+
|
3
|
+
rspec do
|
4
|
+
def mongo
|
5
|
+
$mongo || raise('Mongo not defined (use :with_mongo helper)!')
|
6
|
+
end
|
7
|
+
|
8
|
+
def clear_mongo name = MONGO_TEST_DATABASE
|
9
|
+
mongo.db.collection_names.each do |name|
|
10
|
+
next if name =~ /^system\./
|
11
|
+
mongo.db.collection(name).drop
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def with_mongo
|
17
|
+
require 'ostruct'
|
18
|
+
|
19
|
+
before :all do
|
20
|
+
$mongo = OpenStruct.new.tap do |m|
|
21
|
+
m.connection = Mongo::Connection.new
|
22
|
+
m.db = m.connection.db MONGO_TEST_DATABASE
|
23
|
+
end
|
24
|
+
end
|
25
|
+
after(:all){$mongo = nil}
|
26
|
+
|
27
|
+
before do
|
28
|
+
clear_mongo
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
File without changes
|
data/readme.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Ruby ODM for MongoDB
|
2
|
+
|
3
|
+
Not finished, in development.
|
4
|
+
|
5
|
+
- Very small.
|
6
|
+
- Schema-less, dynamic.
|
7
|
+
- Models can be saved to any collection.
|
8
|
+
- Full support for embedded objects (and MDD composite pattern).
|
9
|
+
- Doesn't try to mimic ActiveRecord, it's differrent and designed to get most of MongoDB.
|
File without changes
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Hash CRUD" do
|
4
|
+
with_mongo_model
|
5
|
+
|
6
|
+
describe 'simple' do
|
7
|
+
before do
|
8
|
+
@zeratul = {name: 'Zeratul', info: 'Dark Templar'}
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'crud' do
|
12
|
+
# read
|
13
|
+
db.heroes.count.should == 0
|
14
|
+
db.heroes.all.should == []
|
15
|
+
db.heroes.first.should == nil
|
16
|
+
|
17
|
+
# create
|
18
|
+
db.heroes.save(@zeratul)
|
19
|
+
|
20
|
+
# read
|
21
|
+
db.heroes.all.should == [@zeratul]
|
22
|
+
db.heroes.count.should == 1
|
23
|
+
db.heroes.first.should == @zeratul
|
24
|
+
|
25
|
+
# update
|
26
|
+
@zeratul[:info] = 'Killer of Cerebrates'
|
27
|
+
db.heroes.save({name: 'Zeratul'}, @zeratul)
|
28
|
+
db.heroes.count.should == 1
|
29
|
+
db.heroes.first(name: 'Zeratul').info.should == 'Killer of Cerebrates'
|
30
|
+
|
31
|
+
# destroy
|
32
|
+
db.heroes.destroy name: 'Zeratul'
|
33
|
+
db.heroes.count.should == 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'embedded' do
|
38
|
+
before do
|
39
|
+
@player = {
|
40
|
+
name: 'Alex',
|
41
|
+
missions: [
|
42
|
+
{name: 'Wasteland', stats: {buildings: 5, units: 10}},
|
43
|
+
{name: 'Backwater Station', stats: {buildings: 8, units: 25}}
|
44
|
+
]
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'crud' do
|
49
|
+
# create
|
50
|
+
db.players.save(@player)
|
51
|
+
|
52
|
+
# read
|
53
|
+
db.players.count.should == 1
|
54
|
+
db.players.first.should == @player
|
55
|
+
|
56
|
+
# update
|
57
|
+
@player[:missions].first[:stats][:units] = 9
|
58
|
+
@player.missions << {name: 'Desperate Alliance', stats: {buildings: 11, units: 40}},
|
59
|
+
db.players.save({name: 'Alex'}, @player)
|
60
|
+
db.players.count.should == 1
|
61
|
+
db.players.first.should == @player
|
62
|
+
db.players.first.object_id.should_not == @player.object_id
|
63
|
+
|
64
|
+
# destroy
|
65
|
+
db.players.destroy name: 'Alex'
|
66
|
+
db.players.count.should == 0
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'object/crud_shared'
|
3
|
+
|
4
|
+
describe "Model CRUD" do
|
5
|
+
with_mongo_model
|
6
|
+
|
7
|
+
describe 'simple' do
|
8
|
+
before do
|
9
|
+
class Person
|
10
|
+
inherit Mongo::Model
|
11
|
+
collection{db.heroes}
|
12
|
+
|
13
|
+
def initialize name, info; @name, @info = name, info end
|
14
|
+
attr_accessor :name, :info
|
15
|
+
def == o; [self.class, name, info] == [o.class, o.respond_to(:name), o.respond_to(:info)] end
|
16
|
+
end
|
17
|
+
|
18
|
+
@zeratul = User.new 'Zeratul', 'Dark Templar'
|
19
|
+
end
|
20
|
+
after{remove_constants :Person}
|
21
|
+
|
22
|
+
it_should_behave_like "object CRUD"
|
23
|
+
|
24
|
+
it 'model crud' do
|
25
|
+
# read
|
26
|
+
Person.count.should == 0
|
27
|
+
Person.all.should == []
|
28
|
+
Person.first.should == nil
|
29
|
+
|
30
|
+
# create
|
31
|
+
@zeratul.save.should be_true
|
32
|
+
@zeratul._id.should be_present
|
33
|
+
|
34
|
+
# read
|
35
|
+
Person.count.should == 1
|
36
|
+
Person.all.should == [@zeratul]
|
37
|
+
Person.first.should == @zeratul
|
38
|
+
Person.first.object_id.should_not == @zeratul.object_id
|
39
|
+
|
40
|
+
# update
|
41
|
+
@zeratul.info = 'Killer of Cerebrates'
|
42
|
+
@zeratul.save.should be_true
|
43
|
+
Person.count.should == 1
|
44
|
+
Person.first(name: 'Zeratul').info.should == 'Killer of Cerebrates'
|
45
|
+
|
46
|
+
# destroy
|
47
|
+
@zeratul.destroy.should be_true
|
48
|
+
Person.count.should == 0
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should be able to save to another collection' do
|
52
|
+
# create
|
53
|
+
@zeratul.save(collection: db.protosses).should be_true
|
54
|
+
@zeratul._id.should be_present
|
55
|
+
|
56
|
+
# read
|
57
|
+
Person.count.should == 0
|
58
|
+
db.protosses.count.should == 1
|
59
|
+
db.protosses.should == @zeratul
|
60
|
+
db.protosses.object_id.should_not == @zeratul.object_id
|
61
|
+
|
62
|
+
# update
|
63
|
+
@zeratul.info = 'Killer of Cerebrates'
|
64
|
+
@zeratul.save(collection: db.protosses).should be_true
|
65
|
+
Person.count.should == 0
|
66
|
+
db.protosses.count.should == 1
|
67
|
+
db.protosses.first(name: 'Zeratul').info.should == 'Killer of Cerebrates'
|
68
|
+
|
69
|
+
# destroy
|
70
|
+
@zeratul.destroy(collection: db.protosses).should be_true
|
71
|
+
db.protosses.count.should == 0
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'embedded' do
|
76
|
+
before do
|
77
|
+
class Player
|
78
|
+
inherit Mongo::Model
|
79
|
+
attr_accessor :missions
|
80
|
+
def == o; [self.class, self.missions] = [o.class, o.respond_to(:missions)] end
|
81
|
+
|
82
|
+
class Mission
|
83
|
+
inherit Mongo::Model
|
84
|
+
def initialize name, stats; @name, @stats = name, stats end
|
85
|
+
attr_accessor :name, :stats
|
86
|
+
def == o; [self.class, self.name, self.stats] = [o.class, o.respond_to(:name), o.respond_to(:stats)] end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
@player = Player.new
|
91
|
+
@player.missions = [
|
92
|
+
Player::Mission.new('Wasteland', {buildings: 5, units: 10}),
|
93
|
+
Player::Mission.new('Backwater Station', {buildings: 8, units: 25}),
|
94
|
+
]
|
95
|
+
end
|
96
|
+
after{remove_constants :Player}
|
97
|
+
|
98
|
+
it_should_behave_like 'shared object CRUD'
|
99
|
+
|
100
|
+
it 'crud' do
|
101
|
+
# create
|
102
|
+
@player.save.should be_true
|
103
|
+
@player._id.should be_present
|
104
|
+
|
105
|
+
# read
|
106
|
+
Player.count.should == 1
|
107
|
+
Player.first.should == @player
|
108
|
+
Player.first.object_id.should_not == @players.object_id
|
109
|
+
|
110
|
+
# update
|
111
|
+
@player.missions.first.stats[:units] = 9
|
112
|
+
@player.missions << Player::Mission.new('Desperate Alliance', {buildings: 11, units: 40}),
|
113
|
+
@player.save.should be_true
|
114
|
+
Player.count.should == 1
|
115
|
+
Player.first.should == @player
|
116
|
+
Player.first.object_id.should_not == @player.object_id
|
117
|
+
|
118
|
+
# destroy
|
119
|
+
@player.destroy.should be_true
|
120
|
+
Player.count.should == 0
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
File without changes
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Object callbacks' do
|
4
|
+
with_mongo_model
|
5
|
+
|
6
|
+
before do
|
7
|
+
class Player
|
8
|
+
attr_accessor :missions
|
9
|
+
|
10
|
+
class Mission
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
@mission = Player::Mission.new
|
15
|
+
@player = Player.new
|
16
|
+
@player.missions = [@mission]
|
17
|
+
end
|
18
|
+
after{remove_constants :Player}
|
19
|
+
|
20
|
+
it 'create' do
|
21
|
+
[
|
22
|
+
:before_validation,
|
23
|
+
:after_validation,
|
24
|
+
:before_save,
|
25
|
+
:before_create,
|
26
|
+
:after_create,
|
27
|
+
:after_save
|
28
|
+
].each do |name|
|
29
|
+
@player.should_receive(name).ordered
|
30
|
+
@misson.should_receive(name).ordered
|
31
|
+
end
|
32
|
+
|
33
|
+
db.players.save @player
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'update' do
|
37
|
+
db.players.save @player
|
38
|
+
|
39
|
+
[
|
40
|
+
:before_validation,
|
41
|
+
:validate,
|
42
|
+
:after_validation,
|
43
|
+
:before_save,
|
44
|
+
:before_update,
|
45
|
+
:after_update,
|
46
|
+
:after_save
|
47
|
+
].each do |name|
|
48
|
+
@player.should_receive(name).ordered
|
49
|
+
@misson.should_receive(name).ordered
|
50
|
+
end
|
51
|
+
db.players.save @player
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'destroy' do
|
55
|
+
db.players.save @player
|
56
|
+
|
57
|
+
[
|
58
|
+
:before_validation,
|
59
|
+
:validate,
|
60
|
+
:after_validation,
|
61
|
+
:before_destroy,
|
62
|
+
:after_destroy,
|
63
|
+
].each do |name|
|
64
|
+
@player.should_receive(name).ordered
|
65
|
+
@misson.should_receive(name).ordered
|
66
|
+
end
|
67
|
+
db.players.destroy @player
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should be able interrupt CRUD' do
|
71
|
+
@misson.stub!(:before_save).and_return(false)
|
72
|
+
db.players.save(@player).should be_false
|
73
|
+
db.players.count.should == 0
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should be able skip callbacks' do
|
77
|
+
[
|
78
|
+
:before_validation,
|
79
|
+
:after_validation,
|
80
|
+
:before_save,
|
81
|
+
:before_create,
|
82
|
+
:after_create,
|
83
|
+
:after_save,
|
84
|
+
:before_update,
|
85
|
+
:after_update,
|
86
|
+
:before_destroy,
|
87
|
+
:after_destroy
|
88
|
+
].each do |name|
|
89
|
+
@player.should_not_receive(name)
|
90
|
+
@misson.should_receive(name)
|
91
|
+
end
|
92
|
+
|
93
|
+
db.players.save @player, callbacks: false
|
94
|
+
db.players.count.should == 1
|
95
|
+
db.players.save @player, callbacks: false
|
96
|
+
db.players.count.should == 1
|
97
|
+
db.players.destroy @player, callbacks: false
|
98
|
+
db.players.count.should == 0
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
shared_examples_for 'object CRUD' do
|
2
|
+
it 'crud' do
|
3
|
+
# read
|
4
|
+
db.heroes.count.should == 0
|
5
|
+
db.heroes.all.should == []
|
6
|
+
db.heroes.first.should == nil
|
7
|
+
|
8
|
+
# create
|
9
|
+
db.heroes.save(@zeratul).should be_true
|
10
|
+
@zeratul.instance_variable_get(:@_id).should be_present
|
11
|
+
|
12
|
+
# read
|
13
|
+
db.heroes.count.should == 1
|
14
|
+
db.heroes.all.should == [@zeratul]
|
15
|
+
db.heroes.first.should == @zeratul
|
16
|
+
db.heroes.first.object_id.should_not == @zeratul.object_id
|
17
|
+
|
18
|
+
# update
|
19
|
+
@zeratul.info = 'Killer of Cerebrates'
|
20
|
+
db.heroes.save(@zeratul).should be_true
|
21
|
+
db.heroes.count.should == 1
|
22
|
+
db.heroes.first(name: 'Zeratul').info.should == 'Killer of Cerebrates'
|
23
|
+
|
24
|
+
# destroy
|
25
|
+
db.heroes.destroy(@zeratul).should be_true
|
26
|
+
db.heroes.count.should == 0
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
shared_examples_for 'embedded object CRUD' do
|
31
|
+
it 'crud' do
|
32
|
+
# create
|
33
|
+
db.players.save(@player)
|
34
|
+
@player.instance_variable_get(:@_id).should be_present
|
35
|
+
|
36
|
+
# read
|
37
|
+
db.players.count.should == 1
|
38
|
+
db.players.first.should == @player
|
39
|
+
db.players.first.object_id.should_not == @players.object_id
|
40
|
+
|
41
|
+
# update
|
42
|
+
@player.missions.first.stats[:units] = 9
|
43
|
+
@player.missions << Player::Mission.new('Desperate Alliance', {buildings: 11, units: 40}),
|
44
|
+
db.players.save @player
|
45
|
+
db.players.count.should == 1
|
46
|
+
db.players.first.should == @player
|
47
|
+
db.players.first.object_id.should_not == @player.object_id
|
48
|
+
|
49
|
+
# destroy
|
50
|
+
db.players.destroy @player
|
51
|
+
db.players.count.should == 0
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'object/crud_shared'
|
3
|
+
|
4
|
+
describe "Object CRUD" do
|
5
|
+
with_mongo_model
|
6
|
+
|
7
|
+
describe 'simple' do
|
8
|
+
before do
|
9
|
+
class Person
|
10
|
+
def initialize name, info; @name, @info = name, info end
|
11
|
+
attr_accessor :name, :info
|
12
|
+
def == o; [self.class, name, info] == [o.class, o.respond_to(:name), o.respond_to(:info)] end
|
13
|
+
end
|
14
|
+
|
15
|
+
@zeratul = User.new 'Zeratul', 'Dark Templar'
|
16
|
+
end
|
17
|
+
after{remove_constants :Person}
|
18
|
+
|
19
|
+
it_should_behave_like "object CRUD"
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'embedded' do
|
23
|
+
before do
|
24
|
+
class Player
|
25
|
+
attr_accessor :missions
|
26
|
+
def == o; [self.class, self.missions] = [o.class, o.respond_to(:missions)] end
|
27
|
+
|
28
|
+
class Mission
|
29
|
+
def initialize name, stats; @name, @stats = name, stats end
|
30
|
+
attr_accessor :name, :stats
|
31
|
+
def == o; [self.class, self.name, self.stats] = [o.class, o.respond_to(:name), o.respond_to(:stats)] end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
@player = Player.new
|
36
|
+
@player.missions = [
|
37
|
+
Player::Mission.new('Wasteland', {buildings: 5, units: 10}),
|
38
|
+
Player::Mission.new('Backwater Station', {buildings: 8, units: 25}),
|
39
|
+
]
|
40
|
+
end
|
41
|
+
after{remove_constants :Player}
|
42
|
+
|
43
|
+
it_should_behave_like 'embedded object CRUD'
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Object validation' do
|
4
|
+
with_mongo_model
|
5
|
+
|
6
|
+
before do
|
7
|
+
class Player
|
8
|
+
attr_accessor :missions
|
9
|
+
|
10
|
+
class Mission
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
@mission = Player::Mission.new
|
15
|
+
@player = Player.new
|
16
|
+
@player.missions = [@mission]
|
17
|
+
end
|
18
|
+
after{remove_constants :Player}
|
19
|
+
|
20
|
+
it 'should not save/update/destroy invalid objects' do
|
21
|
+
# create
|
22
|
+
@player.stub!(:valid?).and_return(false)
|
23
|
+
db.players.save(@player).should be_false
|
24
|
+
|
25
|
+
@player.stub!(:valid?).and_return(true)
|
26
|
+
db.players.save(@player).should be_true
|
27
|
+
|
28
|
+
# update
|
29
|
+
@player.stub!(:valid?).and_return(false)
|
30
|
+
db.players.save(@player).should be_false
|
31
|
+
|
32
|
+
@player.stub!(:valid?).and_return(true)
|
33
|
+
db.players.save(@player).should be_true
|
34
|
+
|
35
|
+
# destroy
|
36
|
+
@player.stub!(:valid?).and_return(false)
|
37
|
+
db.players.destroy(@player).should be_false
|
38
|
+
|
39
|
+
@player.stub!(:valid?).and_return(true)
|
40
|
+
db.players.destroy(@player).should be_true
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should not save/update/destroy invalid embedded objects' do
|
44
|
+
# create
|
45
|
+
@mission.stub!(:valid?).and_return(false)
|
46
|
+
db.players.save(@player).should be_false
|
47
|
+
|
48
|
+
@mission.stub!(:valid?).and_return(true)
|
49
|
+
db.players.save(@player).should be_true
|
50
|
+
|
51
|
+
# update
|
52
|
+
@mission.stub!(:valid?).and_return(false)
|
53
|
+
db.players.save(@player).should be_false
|
54
|
+
|
55
|
+
@mission.stub!(:valid?).and_return(true)
|
56
|
+
db.players.save(@player).should be_true
|
57
|
+
|
58
|
+
# destroy
|
59
|
+
@mission.stub!(:valid?).and_return(false)
|
60
|
+
db.players.destroy(@player).should be_false
|
61
|
+
|
62
|
+
@mission.stub!(:valid?).and_return(true)
|
63
|
+
db.players.destroy(@player).should be_true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should be able skip validation" do
|
67
|
+
@player.stub!(:valid?).and_return(false)
|
68
|
+
db.players.save(@player, validate: false).should be_true
|
69
|
+
|
70
|
+
@player.stub!(:valid?).and_return(true)
|
71
|
+
@mission.stub!(:valid?).and_return(false)
|
72
|
+
db.players.save(@player, validate: false).should be_true
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'mongo_model'
|
data/spec/query_spec.rb
ADDED
File without changes
|
data/spec/test_spec.rb
ADDED
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mongo-db
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alexey Petrushin
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-08-12 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description:
|
15
|
+
email:
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- Rakefile
|
21
|
+
- readme.md
|
22
|
+
- lib/mongo_db/driver/connection.rb
|
23
|
+
- lib/mongo_db/driver/database.rb
|
24
|
+
- lib/mongo_db/driver/spec.rb
|
25
|
+
- lib/mongo_db/driver.rb
|
26
|
+
- lib/mongo_db/gems.rb
|
27
|
+
- lib/mongo_db/model.rb
|
28
|
+
- lib/mongo_db.rb
|
29
|
+
- spec/mongo_ext/migration_spec.rb
|
30
|
+
- spec/mongo_ext/misc_spec.rb
|
31
|
+
- spec/mongo_ext/spec_helper.rb
|
32
|
+
- spec/mongo_model/hash/crud_spec.rb
|
33
|
+
- spec/mongo_model/model/crud_spec.rb
|
34
|
+
- spec/mongo_model/model/query_spec.rb
|
35
|
+
- spec/mongo_model/object/callbacks_spec.rb
|
36
|
+
- spec/mongo_model/object/crud_shared.rb
|
37
|
+
- spec/mongo_model/object/crud_spec.rb
|
38
|
+
- spec/mongo_model/object/validation_spec.rb
|
39
|
+
- spec/mongo_model/spec_helper.rb
|
40
|
+
- spec/query_spec.rb
|
41
|
+
- spec/test_spec.rb
|
42
|
+
homepage: http://github.com/alexeypetrushin/mongo_db
|
43
|
+
licenses: []
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 1.8.6
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: MongDB ODM. In development, don't use it, come back at 11/8/25
|
66
|
+
test_files: []
|