mongorilla 0.6.1 → 0.7.0
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/ChangeLog +8 -0
- data/README.rdoc +2 -0
- data/lib/mongorilla/document.rb +72 -3
- metadata +15 -13
data/ChangeLog
ADDED
data/README.rdoc
CHANGED
@@ -20,6 +20,8 @@ mongorilla accept single server or Master/Slave or Replica Set
|
|
20
20
|
u.push("logs","bb") #$push whithout update db yet
|
21
21
|
u.push("logs","cc") #$push whithout update db yet
|
22
22
|
p u.logs # ["ooooo","bb","cc"]
|
23
|
+
p u.password # "hello"
|
24
|
+
p u["password"] # "hello"
|
23
25
|
u.inc("log_count",2) #$inc +2 whithout update db yet
|
24
26
|
p u.log_count # 3
|
25
27
|
ret = u.save({:log_count => {"$lt" => 1}},Mongorilla::Document::SYNC) #update failed because log_count was 1.
|
data/lib/mongorilla/document.rb
CHANGED
@@ -28,6 +28,48 @@ module Mongorilla
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
def self.recursive_convert(m,trancefar)
|
32
|
+
case m
|
33
|
+
when Array
|
34
|
+
m.map{|a| recursive_convert(a,trancefar)}
|
35
|
+
when Hash
|
36
|
+
{}.tap{|h| m.each{|k,v| h[k.to_s] = recursive_convert(v,trancefar)}}
|
37
|
+
else
|
38
|
+
trancefar.call(m)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.convert
|
43
|
+
lambda{|m|
|
44
|
+
case m
|
45
|
+
when Time
|
46
|
+
m.localtime
|
47
|
+
when String
|
48
|
+
m.dup
|
49
|
+
when Symbol
|
50
|
+
m.to_s
|
51
|
+
else
|
52
|
+
m
|
53
|
+
end
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.convert_string
|
58
|
+
lambda{|m|
|
59
|
+
case m
|
60
|
+
when String
|
61
|
+
m.dup
|
62
|
+
when Symbol
|
63
|
+
m.to_s
|
64
|
+
when BSON::ObjectId
|
65
|
+
m.to_s
|
66
|
+
else
|
67
|
+
m
|
68
|
+
end
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
|
31
73
|
def self.included(c)
|
32
74
|
fields = c.const_get("#{c}Fields")
|
33
75
|
fields.each do |f|
|
@@ -40,10 +82,35 @@ module Mongorilla
|
|
40
82
|
|
41
83
|
def initialize(doc)
|
42
84
|
@orig = doc
|
43
|
-
@doc =
|
85
|
+
@doc = Document.recursive_convert(@orig,Document.convert)
|
44
86
|
@changes={}
|
45
87
|
end
|
46
88
|
|
89
|
+
def [](f)
|
90
|
+
send(f.to_sym)
|
91
|
+
end
|
92
|
+
|
93
|
+
def attributes
|
94
|
+
fields = self.class.const_get("#{self.class}Fields")
|
95
|
+
{}.tap{|h| fields.each{|f| h[f.to_s] = @doc[f.to_s]}}
|
96
|
+
end
|
97
|
+
|
98
|
+
def to_json
|
99
|
+
Document.recursive_convert(attributes,Document.convert_string).to_json
|
100
|
+
end
|
101
|
+
|
102
|
+
def to_yaml
|
103
|
+
Document.recursive_convert(attributes,Document.convert_string).to_yaml
|
104
|
+
end
|
105
|
+
|
106
|
+
def inspect
|
107
|
+
Document.recursive_convert(attributes,Document.convert_string).inspect
|
108
|
+
end
|
109
|
+
|
110
|
+
def to_s
|
111
|
+
inspect
|
112
|
+
end
|
113
|
+
|
47
114
|
def origin
|
48
115
|
@orig
|
49
116
|
end
|
@@ -54,11 +121,13 @@ module Mongorilla
|
|
54
121
|
|
55
122
|
def set(f,v)
|
56
123
|
send(f)
|
57
|
-
@doc[f] = v
|
124
|
+
@doc[f.to_s] = v
|
58
125
|
@changes["$set"] ||= {}
|
59
|
-
@changes["$set"][f] = v
|
126
|
+
@changes["$set"][f.to_s] = v
|
60
127
|
end
|
61
128
|
|
129
|
+
alias []= set
|
130
|
+
|
62
131
|
def inc(f,v)
|
63
132
|
@doc[f] = 0 unless send(f)
|
64
133
|
@doc[f] += v
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongorilla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
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-12-
|
12
|
+
date: 2011-12-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo
|
16
|
-
requirement: &
|
16
|
+
requirement: &11767280 !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: *11767280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &9559420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.3.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *9559420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &11853580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *11853580
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &11850160 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.6.4
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *11850160
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rcov
|
60
|
-
requirement: &
|
60
|
+
requirement: &11847840 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,18 +65,20 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *11847840
|
69
69
|
description: Small Object Document Mapper for Mongo. you can update atomic with condition
|
70
70
|
email: laten@nifty.com
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files:
|
74
|
+
- ChangeLog
|
74
75
|
- LICENSE.txt
|
75
76
|
- README.rdoc
|
76
77
|
files:
|
77
78
|
- lib/mongorilla.rb
|
78
79
|
- lib/mongorilla/collection.rb
|
79
80
|
- lib/mongorilla/document.rb
|
81
|
+
- ChangeLog
|
80
82
|
- LICENSE.txt
|
81
83
|
- README.rdoc
|
82
84
|
homepage: http://github.com/takeshy/mongorilla
|
@@ -94,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
96
|
version: '0'
|
95
97
|
segments:
|
96
98
|
- 0
|
97
|
-
hash:
|
99
|
+
hash: 986614645559502525
|
98
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
101
|
none: false
|
100
102
|
requirements:
|