mongo-hashie 0.1.1 → 0.1.2
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/README.rdoc +2 -2
- data/Rakefile +13 -40
- data/lib/mongo-hashie/base.rb +2 -2
- data/lib/mongo-hashie/version.rb +3 -0
- data/spec/mongo-hashie_spec.rb +76 -0
- data/spec/spec_helper.rb +6 -0
- metadata +79 -31
- data/.document +0 -5
- data/.gitignore +0 -21
- data/VERSION +0 -1
- data/mongo-hashie.gemspec +0 -63
- data/test/helper.rb +0 -12
- data/test/test_mongo-hashie.rb +0 -76
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -1,51 +1,24 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'bundler'
|
2
|
+
require 'rspec/core/rake_task'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "mongo-hashie"
|
8
|
-
gem.summary = "Simple MongoDB Object Wrapper based on Hashie"
|
9
|
-
gem.description = "Simple MongoDB Object Wrapper based on Hashie"
|
10
|
-
gem.email = "kiessler@inceedo.com"
|
11
|
-
gem.homepage = "http://github.com/okiess/mongo-hashie"
|
12
|
-
gem.authors = ["Oliver Kiessler"]
|
13
|
-
gem.add_development_dependency "shoulda", ">= 0"
|
14
|
-
gem.add_dependency "hashie"
|
15
|
-
gem.add_dependency "mongo"
|
16
|
-
end
|
17
|
-
Jeweler::GemcutterTasks.new
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
|
-
end
|
4
|
+
$:.push File.expand_path("../lib", __FILE__)
|
5
|
+
require "mongo-hashie/version"
|
21
6
|
|
22
|
-
|
23
|
-
Rake::TestTask.new(:test) do |test|
|
24
|
-
test.libs << 'lib' << 'test'
|
25
|
-
test.pattern = 'test/**/test_*.rb'
|
26
|
-
test.verbose = true
|
27
|
-
end
|
7
|
+
Bundler::GemHelper.install_tasks
|
28
8
|
|
29
|
-
|
30
|
-
require 'rcov/rcovtask'
|
31
|
-
Rcov::RcovTask.new do |test|
|
32
|
-
test.libs << 'test'
|
33
|
-
test.pattern = 'test/**/test_*.rb'
|
34
|
-
test.verbose = true
|
35
|
-
end
|
36
|
-
rescue LoadError
|
37
|
-
task :rcov do
|
38
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
39
|
-
end
|
40
|
-
end
|
9
|
+
RSpec::Core::RakeTask.new(:spec)
|
41
10
|
|
42
|
-
|
11
|
+
RSpec::Core::RakeTask.new(:rcov) do |t|
|
12
|
+
t.rcov = true
|
13
|
+
t.rcov_opts = %w{--include lib -Ispec --exclude spec\,gems}
|
14
|
+
t.rspec_opts = ["-c"]
|
15
|
+
end
|
43
16
|
|
44
|
-
task :default => :
|
17
|
+
task :default => :spec
|
45
18
|
|
46
19
|
require 'rake/rdoctask'
|
47
20
|
Rake::RDocTask.new do |rdoc|
|
48
|
-
version =
|
21
|
+
version = MongoHashie::VERSION
|
49
22
|
|
50
23
|
rdoc.rdoc_dir = 'rdoc'
|
51
24
|
rdoc.title = "mongo-hashie #{version}"
|
data/lib/mongo-hashie/base.rb
CHANGED
@@ -17,7 +17,7 @@ module MongoHashie
|
|
17
17
|
|
18
18
|
def save
|
19
19
|
if self._id.nil?
|
20
|
-
self._id =
|
20
|
+
self._id = BSON::ObjectId.new
|
21
21
|
collection.insert(self)
|
22
22
|
else
|
23
23
|
collection.update({'_id' => self._id}, self)
|
@@ -34,7 +34,7 @@ module MongoHashie
|
|
34
34
|
module ClassMethods
|
35
35
|
def connection
|
36
36
|
Mongo::Connection.new(MongoHashie::Configuration.host, MongoHashie::Configuration.port,
|
37
|
-
:pool_size => MongoHashie::Configuration.pool_size, :
|
37
|
+
:pool_size => MongoHashie::Configuration.pool_size, :pool_timeout => MongoHashie::Configuration.timeout)
|
38
38
|
end
|
39
39
|
|
40
40
|
def db; @@db ||= connection.db(MongoHashie::Configuration.database); end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
3
|
+
|
4
|
+
describe MongoHashie do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
BlogPost.destroy_all; MongoHashie::MetaDataProperties.destroy_all
|
8
|
+
@blog_post_hash = {:title => 'Test Title', :text => 'Bodytext', :author => 'Oliver Kiessler', :views => 1,
|
9
|
+
:tags => ['test1', 'test2', 'test3']}
|
10
|
+
end
|
11
|
+
|
12
|
+
context "basic operations" do
|
13
|
+
it "has a connection and database set" do
|
14
|
+
MongoHashie::Configuration.database.should == 'mongo-hashie-testdb'
|
15
|
+
BlogPost.connection.should_not be_nil
|
16
|
+
BlogPost.db.should_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "can create a new object" do
|
20
|
+
blog_post = BlogPost.new(@blog_post_hash)
|
21
|
+
BlogPost.count.should == 0
|
22
|
+
blog_post.save
|
23
|
+
blog_post._id.should_not be_nil
|
24
|
+
BlogPost.count.should == 1
|
25
|
+
end
|
26
|
+
|
27
|
+
it "can destroy an object" do
|
28
|
+
blog_post = BlogPost.new(@blog_post_hash)
|
29
|
+
blog_post.save
|
30
|
+
BlogPost.count.should == 1
|
31
|
+
blog_post.destroy
|
32
|
+
BlogPost.count.should == 0
|
33
|
+
end
|
34
|
+
|
35
|
+
it "can create an object by passing a hash" do
|
36
|
+
BlogPost.count.should == 0
|
37
|
+
BlogPost.create(@blog_post_hash)
|
38
|
+
BlogPost.count.should == 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "meta data" do
|
43
|
+
it "can have meta data properties" do
|
44
|
+
BlogPost.count.should == 0
|
45
|
+
MongoHashie::MetaDataProperties.count.should == 0
|
46
|
+
BlogPost.create(@blog_post_hash)
|
47
|
+
BlogPost.count.should == 1
|
48
|
+
MongoHashie::MetaDataProperties.count.should == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "can include all keys in the meta data properties" do
|
52
|
+
blog_post = BlogPost.create(@blog_post_hash)
|
53
|
+
BlogPost.properties_used.keys.size.should == 5
|
54
|
+
BlogPost.properties_used.keys.include?('title').should be_true
|
55
|
+
BlogPost.properties_used.keys.include?('text').should be_true
|
56
|
+
BlogPost.properties_used.keys.include?('author').should be_true
|
57
|
+
BlogPost.properties_used.keys.include?('views').should be_true
|
58
|
+
BlogPost.properties_used.keys.include?('tags').should be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "updates keys in the meta data properties" do
|
62
|
+
BlogPost.create(@blog_post_hash)
|
63
|
+
BlogPost.properties_used.keys.size.should == 5
|
64
|
+
BlogPost.create(@blog_post_hash.merge(:likes => 2))
|
65
|
+
BlogPost.properties_used.keys.size.should == 6
|
66
|
+
end
|
67
|
+
|
68
|
+
it "resets keys in the meta data properties when destroy_all is called" do
|
69
|
+
2.times {BlogPost.create(@blog_post_hash)}
|
70
|
+
MongoHashie::MetaDataProperties.first(:class_name => 'BlogPost').should_not be_nil
|
71
|
+
BlogPost.destroy_all
|
72
|
+
MongoHashie::MetaDataProperties.first(:class_name => 'BlogPost').should be_nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo-hashie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Oliver Kiessler
|
@@ -9,62 +15,98 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-10-10 00:00:00 +02:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
17
33
|
type: :development
|
18
|
-
|
19
|
-
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rcov
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
20
40
|
requirements:
|
21
41
|
- - ">="
|
22
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
23
46
|
version: "0"
|
24
|
-
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
25
49
|
- !ruby/object:Gem::Dependency
|
26
50
|
name: hashie
|
27
|
-
|
28
|
-
|
29
|
-
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
30
54
|
requirements:
|
31
55
|
- - ">="
|
32
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
33
60
|
version: "0"
|
34
|
-
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
35
63
|
- !ruby/object:Gem::Dependency
|
36
64
|
name: mongo
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
37
75
|
type: :runtime
|
38
|
-
|
39
|
-
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: bson_ext
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
40
82
|
requirements:
|
41
83
|
- - ">="
|
42
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
43
88
|
version: "0"
|
44
|
-
|
89
|
+
type: :runtime
|
90
|
+
version_requirements: *id005
|
45
91
|
description: Simple MongoDB Object Wrapper based on Hashie
|
46
92
|
email: kiessler@inceedo.com
|
47
93
|
executables: []
|
48
94
|
|
49
95
|
extensions: []
|
50
96
|
|
51
|
-
extra_rdoc_files:
|
52
|
-
|
53
|
-
- README.rdoc
|
97
|
+
extra_rdoc_files: []
|
98
|
+
|
54
99
|
files:
|
55
|
-
- .document
|
56
|
-
- .gitignore
|
57
|
-
- LICENSE
|
58
|
-
- README.rdoc
|
59
|
-
- Rakefile
|
60
|
-
- VERSION
|
61
|
-
- lib/mongo-hashie.rb
|
62
100
|
- lib/mongo-hashie/base.rb
|
63
101
|
- lib/mongo-hashie/meta_data.rb
|
64
102
|
- lib/mongo-hashie/rails.rb
|
65
|
-
- mongo-hashie.
|
66
|
-
-
|
67
|
-
-
|
103
|
+
- lib/mongo-hashie/version.rb
|
104
|
+
- lib/mongo-hashie.rb
|
105
|
+
- LICENSE
|
106
|
+
- README.rdoc
|
107
|
+
- Rakefile
|
108
|
+
- spec/mongo-hashie_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
68
110
|
has_rdoc: true
|
69
111
|
homepage: http://github.com/okiess/mongo-hashie
|
70
112
|
licenses: []
|
@@ -75,24 +117,30 @@ rdoc_options:
|
|
75
117
|
require_paths:
|
76
118
|
- lib
|
77
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
78
121
|
requirements:
|
79
122
|
- - ">="
|
80
123
|
- !ruby/object:Gem::Version
|
124
|
+
hash: 3
|
125
|
+
segments:
|
126
|
+
- 0
|
81
127
|
version: "0"
|
82
|
-
version:
|
83
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
84
130
|
requirements:
|
85
131
|
- - ">="
|
86
132
|
- !ruby/object:Gem::Version
|
133
|
+
hash: 3
|
134
|
+
segments:
|
135
|
+
- 0
|
87
136
|
version: "0"
|
88
|
-
version:
|
89
137
|
requirements: []
|
90
138
|
|
91
139
|
rubyforge_project:
|
92
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 1.5.2
|
93
141
|
signing_key:
|
94
142
|
specification_version: 3
|
95
143
|
summary: Simple MongoDB Object Wrapper based on Hashie
|
96
144
|
test_files:
|
97
|
-
-
|
98
|
-
-
|
145
|
+
- spec/mongo-hashie_spec.rb
|
146
|
+
- spec/spec_helper.rb
|
data/.document
DELETED
data/.gitignore
DELETED
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.1
|
data/mongo-hashie.gemspec
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{mongo-hashie}
|
8
|
-
s.version = "0.1.1"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Oliver Kiessler"]
|
12
|
-
s.date = %q{2010-01-02}
|
13
|
-
s.description = %q{Simple MongoDB Object Wrapper based on Hashie}
|
14
|
-
s.email = %q{kiessler@inceedo.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"lib/mongo-hashie.rb",
|
27
|
-
"lib/mongo-hashie/base.rb",
|
28
|
-
"lib/mongo-hashie/meta_data.rb",
|
29
|
-
"lib/mongo-hashie/rails.rb",
|
30
|
-
"mongo-hashie.gemspec",
|
31
|
-
"test/helper.rb",
|
32
|
-
"test/test_mongo-hashie.rb"
|
33
|
-
]
|
34
|
-
s.homepage = %q{http://github.com/okiess/mongo-hashie}
|
35
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
36
|
-
s.require_paths = ["lib"]
|
37
|
-
s.rubygems_version = %q{1.3.5}
|
38
|
-
s.summary = %q{Simple MongoDB Object Wrapper based on Hashie}
|
39
|
-
s.test_files = [
|
40
|
-
"test/helper.rb",
|
41
|
-
"test/test_mongo-hashie.rb"
|
42
|
-
]
|
43
|
-
|
44
|
-
if s.respond_to? :specification_version then
|
45
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
|
-
s.specification_version = 3
|
47
|
-
|
48
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
49
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
50
|
-
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
51
|
-
s.add_runtime_dependency(%q<mongo>, [">= 0"])
|
52
|
-
else
|
53
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
54
|
-
s.add_dependency(%q<hashie>, [">= 0"])
|
55
|
-
s.add_dependency(%q<mongo>, [">= 0"])
|
56
|
-
end
|
57
|
-
else
|
58
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
59
|
-
s.add_dependency(%q<hashie>, [">= 0"])
|
60
|
-
s.add_dependency(%q<mongo>, [">= 0"])
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
data/test/helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
-
require 'mongo-hashie'
|
8
|
-
|
9
|
-
class Test::Unit::TestCase
|
10
|
-
end
|
11
|
-
|
12
|
-
MongoHashie::Configuration.database = 'mongo-hashie-testdb'
|
data/test/test_mongo-hashie.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
class BlogPost < MongoHashie::Base
|
4
|
-
end
|
5
|
-
|
6
|
-
class TestMongoHashie < Test::Unit::TestCase
|
7
|
-
def setup
|
8
|
-
BlogPost.destroy_all; MongoHashie::MetaDataProperties.destroy_all
|
9
|
-
@blog_post_hash = {:title => 'Test Title', :text => 'Bodytext', :author => 'Oliver Kiessler', :views => 1,
|
10
|
-
:tags => ['test1', 'test2', 'test3']}
|
11
|
-
end
|
12
|
-
|
13
|
-
context "basic operations" do
|
14
|
-
should "have a connection and database set" do
|
15
|
-
assert_equal MongoHashie::Configuration.database, 'mongo-hashie-testdb'
|
16
|
-
assert_not_nil BlogPost.connection
|
17
|
-
assert_not_nil BlogPost.db
|
18
|
-
end
|
19
|
-
|
20
|
-
should "create a new object" do
|
21
|
-
blog_post = BlogPost.new(@blog_post_hash)
|
22
|
-
assert_equal BlogPost.count, 0
|
23
|
-
blog_post.save
|
24
|
-
assert_not_nil blog_post._id
|
25
|
-
assert_equal BlogPost.count, 1
|
26
|
-
end
|
27
|
-
|
28
|
-
should "destroy object" do
|
29
|
-
blog_post = BlogPost.new(@blog_post_hash)
|
30
|
-
blog_post.save
|
31
|
-
assert_equal BlogPost.count, 1
|
32
|
-
blog_post.destroy
|
33
|
-
assert_equal BlogPost.count, 0
|
34
|
-
end
|
35
|
-
|
36
|
-
should "create object by passing a hash" do
|
37
|
-
assert_equal BlogPost.count, 0
|
38
|
-
blog_post = BlogPost.create(@blog_post_hash)
|
39
|
-
assert_equal BlogPost.count, 1
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "meta data" do
|
44
|
-
should "have meta data properties" do
|
45
|
-
assert_equal BlogPost.count, 0
|
46
|
-
assert_equal MongoHashie::MetaDataProperties.count, 0
|
47
|
-
blog_post = BlogPost.create(@blog_post_hash)
|
48
|
-
assert_equal BlogPost.count, 1
|
49
|
-
assert_equal MongoHashie::MetaDataProperties.count, 1
|
50
|
-
end
|
51
|
-
|
52
|
-
should "include all keys in the meta data properties" do
|
53
|
-
blog_post = BlogPost.create(@blog_post_hash)
|
54
|
-
assert_equal BlogPost.properties_used.keys.size, 5
|
55
|
-
assert BlogPost.properties_used.keys.include?('title')
|
56
|
-
assert BlogPost.properties_used.keys.include?('text')
|
57
|
-
assert BlogPost.properties_used.keys.include?('author')
|
58
|
-
assert BlogPost.properties_used.keys.include?('views')
|
59
|
-
assert BlogPost.properties_used.keys.include?('tags')
|
60
|
-
end
|
61
|
-
|
62
|
-
should "update keys in the meta data properties" do
|
63
|
-
BlogPost.create(@blog_post_hash)
|
64
|
-
assert_equal BlogPost.properties_used.keys.size, 5
|
65
|
-
BlogPost.create(@blog_post_hash.merge(:likes => 2))
|
66
|
-
assert_equal BlogPost.properties_used.keys.size, 6
|
67
|
-
end
|
68
|
-
|
69
|
-
should "reset keys in the meta data properties when destroy_all is called" do
|
70
|
-
2.times {BlogPost.create(@blog_post_hash)}
|
71
|
-
assert_not_nil MongoHashie::MetaDataProperties.first(:class_name => 'BlogPost')
|
72
|
-
BlogPost.destroy_all
|
73
|
-
assert_nil MongoHashie::MetaDataProperties.first(:class_name => 'BlogPost')
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|