mongodb_model 0.2.2 → 0.2.3
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/lib/mongo/model/assignment.rb +1 -1
- data/lib/mongo/model/attribute_convertors.rb +2 -2
- data/lib/mongo/model/callbacks.rb +2 -0
- data/lib/mongo/model/file_model.rb +1 -0
- data/lib/mongo/model/model.rb +4 -2
- data/lib/mongo/model/validation.rb +1 -1
- data/lib/mongo/model.rb +3 -4
- data/spec/callbacks_spec.rb +25 -1
- data/spec/equality_spec.rb +10 -1
- data/spec/file_model_spec.rb +1 -0
- metadata +10 -10
@@ -4,11 +4,11 @@ require 'yaml'
|
|
4
4
|
module Mongo::Model::AttributeConvertors
|
5
5
|
CONVERTORS = {
|
6
6
|
line: {
|
7
|
-
from_string: -> s {(s || "").split(',').collect{|s| s.strip}},
|
7
|
+
from_string: -> s {(s || "").split(',').collect{|s| s.strip}.sort},
|
8
8
|
to_string: -> v {v.join(', ')}
|
9
9
|
},
|
10
10
|
column: {
|
11
|
-
from_string: -> s {(s || "").split("\n").collect{|s| s.strip}},
|
11
|
+
from_string: -> s {(s || "").split("\n").collect{|s| s.strip}.sort},
|
12
12
|
to_string: -> v {v.join("\n")}
|
13
13
|
},
|
14
14
|
yaml: {
|
@@ -12,7 +12,9 @@ module Mongo::Model::Callbacks
|
|
12
12
|
args.each{|executor| set_callback method_name, :before, executor, opt}
|
13
13
|
end
|
14
14
|
end
|
15
|
+
end
|
15
16
|
|
17
|
+
[:validate, :create, :update, :save, :destroy, :build].each do |method_name|
|
16
18
|
define_method "after_#{method_name}" do |*args, &block|
|
17
19
|
opt = args.extract_options!
|
18
20
|
if block
|
data/lib/mongo/model/model.rb
CHANGED
@@ -7,8 +7,10 @@ module Mongo::Model
|
|
7
7
|
def new_record?; !_id end
|
8
8
|
|
9
9
|
inherited do
|
10
|
-
|
11
|
-
|
10
|
+
unless is?(Array) or is?(Hash)
|
11
|
+
alias_method :eql?, :model_eql?
|
12
|
+
alias_method :==, :model_eq?
|
13
|
+
end
|
12
14
|
end
|
13
15
|
|
14
16
|
def model_eql? o
|
data/lib/mongo/model.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'mongodb_model/gems'
|
2
2
|
|
3
3
|
require 'validatable'
|
4
|
-
require 'file_model'
|
5
4
|
require 'ruby_ext'
|
6
5
|
require 'mongo/object'
|
7
6
|
|
@@ -20,14 +19,15 @@ module Mongo::Model; end
|
|
20
19
|
query
|
21
20
|
query_mixin
|
22
21
|
scope
|
23
|
-
|
24
|
-
file_model
|
22
|
+
attribute_convertorshttp://alexeypetrushin.github.com/mongodb_model
|
25
23
|
misc
|
26
24
|
model
|
27
25
|
).each{|f| require "mongo/model/#{f}"}
|
28
26
|
|
29
27
|
module Mongo
|
30
28
|
module Model
|
29
|
+
autoload :FileModel, 'mongo/model/file_model'
|
30
|
+
http://alexeypetrushin.github.com/mongodb_model
|
31
31
|
inherit \
|
32
32
|
Db,
|
33
33
|
Conversion,
|
@@ -38,7 +38,6 @@ module Mongo
|
|
38
38
|
QueryMixin,
|
39
39
|
Scope,
|
40
40
|
AttributeConvertors,
|
41
|
-
Mongo::Model::FileModel,
|
42
41
|
Misc
|
43
42
|
end
|
44
43
|
end
|
data/spec/callbacks_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe 'Model callbacks' do
|
4
4
|
with_mongo_model
|
5
5
|
|
6
|
-
after{remove_constants :
|
6
|
+
after{remove_constants :Post, :Player}
|
7
7
|
|
8
8
|
it "integration smoke test" do
|
9
9
|
class Player
|
@@ -33,4 +33,28 @@ describe 'Model callbacks' do
|
|
33
33
|
|
34
34
|
db.units.save(player).should be_true
|
35
35
|
end
|
36
|
+
|
37
|
+
it "should have :build callback" do
|
38
|
+
class Post
|
39
|
+
inherit Mongo::Model
|
40
|
+
collection :posts
|
41
|
+
|
42
|
+
class Tags < Array
|
43
|
+
end
|
44
|
+
|
45
|
+
def tags
|
46
|
+
@tags ||= Tags.new
|
47
|
+
end
|
48
|
+
attr_writer :tags
|
49
|
+
|
50
|
+
after_build do |post|
|
51
|
+
post.tags = Tags.new.replace post.tags
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
post = Post.new
|
56
|
+
post.save!
|
57
|
+
|
58
|
+
Post.first.tags.class.should == Post::Tags
|
59
|
+
end
|
36
60
|
end
|
data/spec/equality_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe 'Model equality' do
|
4
4
|
with_mongo_model
|
5
5
|
|
6
|
-
after{remove_constants :Player}
|
6
|
+
after{remove_constants :Player, :Tags}
|
7
7
|
|
8
8
|
it "integration smoke test" do
|
9
9
|
class Player
|
@@ -29,4 +29,13 @@ describe 'Model equality' do
|
|
29
29
|
player1.mission.name = 'Into the Flames'
|
30
30
|
player1.should_not == player2
|
31
31
|
end
|
32
|
+
|
33
|
+
it "should correct compare Array/Hash models (from error)" do
|
34
|
+
class Tags < Array
|
35
|
+
inherit Mongo::Model
|
36
|
+
end
|
37
|
+
|
38
|
+
tags = Tags.new.replace ['a', 'b']
|
39
|
+
tags.should_not == Tags.new
|
40
|
+
end
|
32
41
|
end
|
data/spec/file_model_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongodb_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongodb
|
16
|
-
requirement: &
|
16
|
+
requirement: &2781440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2781440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: file_model
|
27
|
-
requirement: &
|
27
|
+
requirement: &2781200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2781200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: validatable2
|
38
|
-
requirement: &
|
38
|
+
requirement: &2780960 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2780960
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: ruby_ext
|
49
|
-
requirement: &
|
49
|
+
requirement: &2780720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2780720
|
58
58
|
description:
|
59
59
|
email:
|
60
60
|
executables: []
|