mongoid-cached-json 1.1.1 → 1.2.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/README.md CHANGED
@@ -170,6 +170,64 @@ Turning Caching Off
170
170
 
171
171
  You can set `Mongoid::CachedJson.config.disable_caching = true`. It may be a good idea to set it to `ENV['DISABLE_JSON_CACHING']`, in case this turns out not to be The Solution To All Of Your Performance Problems (TM).
172
172
 
173
+ Testing JSON
174
+ ------------
175
+
176
+ This library overrides `as_json`, hence testing JSON results can be done at model level.
177
+
178
+ ``` ruby
179
+ describe "as_json" do
180
+ before :each do
181
+ @person = Person.create!({ :first => "John", :last => "Doe" })
182
+ end
183
+ it "returns name" do
184
+ @person.as_json({ :properties => :public })[:name].should== "John Doe"
185
+ end
186
+ end
187
+ ```
188
+
189
+ It's also common to test the results of the API using the [Pathy](https://github.com/twoism/pathy) library.
190
+
191
+ ``` ruby
192
+ describe "as_json" do
193
+ before :each do
194
+ person = Person.create!({ :first => "John", :last => "Doe" })
195
+ end
196
+ it "returns name" do
197
+ get "/api/person/#{person.id}"
198
+ response.body.at_json_path("name").should == "John Doe"
199
+ end
200
+ end
201
+ ```
202
+
203
+ Testing Cache Invalidation
204
+ --------------------------
205
+
206
+ Cache is invalidated by calling `:expire_cached_json` on an instance.
207
+
208
+ ``` ruby
209
+ describe "updating a person" do
210
+ before :each
211
+ @person = Person.create!({ :name => "John Doe" })
212
+ end
213
+ it "invalidates cache" do
214
+ @person.should_receive :expire_cached_json
215
+ @person.update_attributes!({ :name => "updated" }
216
+ end
217
+ end
218
+ ```
219
+ You may also want to use [this RSpec matcher](https://github.com/dblock/mongoid-cached-json/blob/master/spec/support/matchers/invalidate.rb).
220
+
221
+ ```ruby
222
+ describe "updating a person" do
223
+ it "invalidates cache" do
224
+ lambda {
225
+ @person.update_attributes!({ :name => "updated" }
226
+ }.should invalidate @person
227
+ end
228
+ end
229
+ ```
230
+
173
231
  Contributing
174
232
  ------------
175
233
 
@@ -93,7 +93,7 @@ module Mongoid
93
93
 
94
94
  # Cache key.
95
95
  def cached_json_key(options, cached_class, cached_id)
96
- base_class_name = cached_class.collection_name.singularize.camelize
96
+ base_class_name = cached_class.collection_name.to_s.singularize.camelize
97
97
  "as_json/#{options[:version]}/#{base_class_name}/#{cached_id}/#{options[:properties]}/#{!!options[:is_top_level_json]}"
98
98
  end
99
99
 
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid
3
3
  module CachedJson
4
- VERSION = '1.1.1'
4
+ VERSION = '1.2.0'
5
5
  end
6
6
  end
7
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-cached-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-03-23 00:00:00.000000000Z
14
+ date: 2012-05-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
- requirement: &83659680 !ruby/object:Gem::Requirement
18
+ requirement: &73269350 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *83659680
26
+ version_requirements: *73269350
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mongoid
29
- requirement: &83658800 !ruby/object:Gem::Requirement
29
+ requirement: &73268700 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *83658800
37
+ version_requirements: *73268700
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: bson_ext
40
- requirement: &83658220 !ruby/object:Gem::Requirement
40
+ requirement: &73268300 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *83658220
48
+ version_requirements: *73268300
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: hpricot
51
- requirement: &83657740 !ruby/object:Gem::Requirement
51
+ requirement: &73267850 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *83657740
59
+ version_requirements: *73267850
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &83657160 !ruby/object:Gem::Requirement
62
+ requirement: &73267400 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '2.5'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *83657160
70
+ version_requirements: *73267400
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: bundler
73
- requirement: &83656360 !ruby/object:Gem::Requirement
73
+ requirement: &73267040 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ~>
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '1.0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *83656360
81
+ version_requirements: *73267040
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: jeweler
84
- requirement: &83655800 !ruby/object:Gem::Requirement
84
+ requirement: &73266670 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ~>
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '1.6'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *83655800
92
+ version_requirements: *73266670
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: yard
95
- requirement: &83655310 !ruby/object:Gem::Requirement
95
+ requirement: &73266290 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ~>
@@ -100,7 +100,7 @@ dependencies:
100
100
  version: '0.6'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *83655310
103
+ version_requirements: *73266290
104
104
  description: Cached-json is a DSL for describing JSON representations of Mongoid models.
105
105
  email: dblock@dblock.org
106
106
  executables: []
@@ -130,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  segments:
132
132
  - 0
133
- hash: -757425231
133
+ hash: -353824433
134
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  none: false
136
136
  requirements: