mongorilla 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/ChangeLog +8 -0
  2. data/README.rdoc +2 -0
  3. data/lib/mongorilla/document.rb +72 -3
  4. metadata +15 -13
data/ChangeLog ADDED
@@ -0,0 +1,8 @@
1
+ 0.7.0
2
+ * add [] method
3
+ * add []= method
4
+ * add attributes method
5
+ * modify inspect
6
+ * add to_json if json include
7
+ * add to_yaml if yaml include
8
+ * if field type is Time,return localtime
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.
@@ -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 = Marshal.load(Marshal.dump(@orig))
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.6.1
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-09 00:00:00.000000000 Z
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: &15662160 !ruby/object:Gem::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: *15662160
24
+ version_requirements: *11767280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &15660540 !ruby/object:Gem::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: *15660540
35
+ version_requirements: *9559420
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &15658880 !ruby/object:Gem::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: *15658880
46
+ version_requirements: *11853580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &15657280 !ruby/object:Gem::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: *15657280
57
+ version_requirements: *11850160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &15655960 !ruby/object:Gem::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: *15655960
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: 2358068409636906117
99
+ hash: 986614645559502525
98
100
  required_rubygems_version: !ruby/object:Gem::Requirement
99
101
  none: false
100
102
  requirements: