mongoid-cached-json 1.5.1 → 1.5.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.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +6 -0
  5. data/.rubocop_todo.yml +80 -0
  6. data/.travis.yml +16 -0
  7. data/CHANGELOG.md +85 -0
  8. data/CONTRIBUTING.md +118 -0
  9. data/Gemfile +21 -0
  10. data/README.md +49 -52
  11. data/Rakefile +34 -0
  12. data/lib/mongoid-cached-json.rb +0 -1
  13. data/lib/mongoid-cached-json/array.rb +1 -3
  14. data/lib/mongoid-cached-json/cached_json.rb +52 -50
  15. data/lib/mongoid-cached-json/config.rb +20 -21
  16. data/lib/mongoid-cached-json/hash.rb +1 -3
  17. data/lib/mongoid-cached-json/key_references.rb +0 -3
  18. data/lib/mongoid-cached-json/mongoid_criteria.rb +1 -3
  19. data/lib/mongoid-cached-json/version.rb +1 -2
  20. data/mongoid-cached-json.gemspec +17 -0
  21. data/spec/array_spec.rb +48 -0
  22. data/spec/benchmark_spec.rb +115 -0
  23. data/spec/cached_json_spec.rb +501 -0
  24. data/spec/config_spec.rb +21 -0
  25. data/spec/dalli_spec.rb +37 -0
  26. data/spec/hash_spec.rb +66 -0
  27. data/spec/mongoid_criteria_spec.rb +78 -0
  28. data/spec/spec_helper.rb +20 -0
  29. data/spec/support/awesome_artwork.rb +11 -0
  30. data/spec/support/awesome_image.rb +14 -0
  31. data/spec/support/fast_json_artwork.rb +15 -0
  32. data/spec/support/fast_json_image.rb +12 -0
  33. data/spec/support/fast_json_url.rb +12 -0
  34. data/spec/support/json_embedded_foobar.rb +5 -0
  35. data/spec/support/json_employee.rb +12 -0
  36. data/spec/support/json_foobar.rb +19 -0
  37. data/spec/support/json_manager.rb +14 -0
  38. data/spec/support/json_math.rb +9 -0
  39. data/spec/support/json_parent_foobar.rb +11 -0
  40. data/spec/support/json_polymorphic_embedded_foobar.rb +9 -0
  41. data/spec/support/json_polymorphic_referenced_foobar.rb +9 -0
  42. data/spec/support/json_referenced_foobar.rb +5 -0
  43. data/spec/support/json_supervisor.rb +13 -0
  44. data/spec/support/json_transform.rb +13 -0
  45. data/spec/support/matchers/invalidate.rb +22 -0
  46. data/spec/support/person.rb +20 -0
  47. data/spec/support/poly_company.rb +10 -0
  48. data/spec/support/poly_person.rb +10 -0
  49. data/spec/support/poly_post.rb +9 -0
  50. data/spec/support/prison_cell.rb +11 -0
  51. data/spec/support/prison_inmate.rb +12 -0
  52. data/spec/support/secret_parent.rb +11 -0
  53. data/spec/support/sometimes_secret.rb +11 -0
  54. data/spec/support/tool.rb +11 -0
  55. data/spec/support/tool_box.rb +10 -0
  56. metadata +62 -137
@@ -0,0 +1,22 @@
1
+ RSpec::Matchers.define :invalidate do |target|
2
+ supports_block_expectations
3
+
4
+ match do |block|
5
+ call_counts = 0
6
+ Array(target).each do |cached_model|
7
+ allow(cached_model).to receive(:expire_cached_json) do
8
+ call_counts += 1
9
+ end
10
+ end
11
+ block.call if block.is_a?(Proc)
12
+ call_counts == Array(target).count
13
+ end
14
+
15
+ failure_message do
16
+ 'target cache to be invalidated, but it was not'
17
+ end
18
+
19
+ failure_message_when_negated do
20
+ 'target cache to be invalidated, but it was not'
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ class Person
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :first, type: String
6
+ field :last, type: String
7
+ field :middle, type: String
8
+ field :born, type: String
9
+
10
+ def name
11
+ [first, middle, last].compact.join(' ')
12
+ end
13
+
14
+ json_fields \
15
+ first: { versions: [:v2, :v3] },
16
+ last: { versions: [:v2, :v3] },
17
+ middle: { versions: [:v2, :v3] },
18
+ born: { versions: :v3 },
19
+ name: { definition: :name }
20
+ end
@@ -0,0 +1,10 @@
1
+ class PolyCompany
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ has_many :poly_posts, as: :postable
6
+
7
+ json_fields \
8
+ id: {},
9
+ type: { definition: lambda { |x| x.class.name } }
10
+ end
@@ -0,0 +1,10 @@
1
+ class PolyPerson
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ has_many :poly_posts, as: :postable
6
+
7
+ json_fields \
8
+ id: {},
9
+ type: { definition: lambda { |x| x.class.name } }
10
+ end
@@ -0,0 +1,9 @@
1
+ class PolyPost
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ belongs_to :postable, polymorphic: true
6
+
7
+ json_fields \
8
+ parent: { type: :reference, definition: :postable }
9
+ end
@@ -0,0 +1,11 @@
1
+ class PrisonCell
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :number
6
+ embeds_many :inmates, class_name: 'PrisonInmate'
7
+
8
+ json_fields \
9
+ number: {},
10
+ inmates: { type: :reference }
11
+ end
@@ -0,0 +1,12 @@
1
+ class PrisonInmate
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :nickname
6
+ embedded_in :prison_cell, inverse_of: :inmates
7
+ belongs_to :person
8
+
9
+ json_fields \
10
+ nickname: {},
11
+ person: { type: :reference }
12
+ end
@@ -0,0 +1,11 @@
1
+ class SecretParent
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :name
6
+ has_one :sometimes_secret
7
+
8
+ json_fields \
9
+ name: {},
10
+ child: { definition: :sometimes_secret, type: :reference }
11
+ end
@@ -0,0 +1,11 @@
1
+ class SometimesSecret
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :secret, default: 'Afraid of the dark'
6
+ field :should_tell_secret, type: Boolean
7
+ belongs_to :secret_parent
8
+
9
+ json_fields hide_as_child_json_when: lambda { |x| !x.should_tell_secret },
10
+ secret: {}
11
+ end
@@ -0,0 +1,11 @@
1
+ class Tool
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :name
6
+ belongs_to :tool_box
7
+
8
+ json_fields \
9
+ name: {},
10
+ tool_box: { type: :reference }
11
+ end
@@ -0,0 +1,10 @@
1
+ class ToolBox
2
+ include Mongoid::Document
3
+ include Mongoid::CachedJson
4
+
5
+ field :color
6
+ has_many :tools
7
+
8
+ json_fields \
9
+ color: {}
10
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-cached-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
5
- prerelease:
4
+ version: 1.5.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Aaron Windsor
@@ -11,144 +10,39 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-05-07 00:00:00.000000000 Z
13
+ date: 2014-12-29 00:00:00.000000000 Z
15
14
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: activesupport
18
- requirement: !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ! '>='
22
- - !ruby/object:Gem::Version
23
- version: '0'
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
- requirements:
29
- - - ! '>='
30
- - !ruby/object:Gem::Version
31
- version: '0'
32
15
  - !ruby/object:Gem::Dependency
33
16
  name: mongoid
34
17
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
- requirements:
37
- - - ! '>='
38
- - !ruby/object:Gem::Version
39
- version: 3.0.0
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: 3.0.0
48
- - !ruby/object:Gem::Dependency
49
- name: hpricot
50
- requirement: !ruby/object:Gem::Requirement
51
- none: false
52
18
  requirements:
53
- - - ! '>='
19
+ - - ">="
54
20
  - !ruby/object:Gem::Version
55
- version: '0'
21
+ version: '3.0'
56
22
  type: :runtime
57
23
  prerelease: false
58
24
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ! '>='
62
- - !ruby/object:Gem::Version
63
- version: '0'
64
- - !ruby/object:Gem::Dependency
65
- name: rspec
66
- requirement: !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ~>
70
- - !ruby/object:Gem::Version
71
- version: '2.5'
72
- type: :development
73
- prerelease: false
74
- version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ~>
78
- - !ruby/object:Gem::Version
79
- version: '2.5'
80
- - !ruby/object:Gem::Dependency
81
- name: bundler
82
- requirement: !ruby/object:Gem::Requirement
83
- none: false
84
25
  requirements:
85
- - - ~>
26
+ - - ">="
86
27
  - !ruby/object:Gem::Version
87
- version: '1.0'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
93
- - - ~>
94
- - !ruby/object:Gem::Version
95
- version: '1.0'
96
- - !ruby/object:Gem::Dependency
97
- name: jeweler
98
- requirement: !ruby/object:Gem::Requirement
99
- none: false
100
- requirements:
101
- - - ~>
102
- - !ruby/object:Gem::Version
103
- version: '1.6'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ~>
110
- - !ruby/object:Gem::Version
111
- version: '1.6'
112
- - !ruby/object:Gem::Dependency
113
- name: yard
114
- requirement: !ruby/object:Gem::Requirement
115
- none: false
116
- requirements:
117
- - - ~>
118
- - !ruby/object:Gem::Version
119
- version: '0.6'
120
- type: :development
121
- prerelease: false
122
- version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ~>
126
- - !ruby/object:Gem::Version
127
- version: '0.6'
128
- - !ruby/object:Gem::Dependency
129
- name: dalli
130
- requirement: !ruby/object:Gem::Requirement
131
- none: false
132
- requirements:
133
- - - ~>
134
- - !ruby/object:Gem::Version
135
- version: '2.6'
136
- type: :development
137
- prerelease: false
138
- version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
- requirements:
141
- - - ~>
142
- - !ruby/object:Gem::Version
143
- version: '2.6'
144
- description: Cached-json is a DSL for describing JSON representations of Mongoid models.
28
+ version: '3.0'
29
+ description:
145
30
  email: dblock@dblock.org
146
31
  executables: []
147
32
  extensions: []
148
- extra_rdoc_files:
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ".gitignore"
36
+ - ".rspec"
37
+ - ".rubocop.yml"
38
+ - ".rubocop_todo.yml"
39
+ - ".travis.yml"
40
+ - CHANGELOG.md
41
+ - CONTRIBUTING.md
42
+ - Gemfile
149
43
  - LICENSE.md
150
44
  - README.md
151
- files:
45
+ - Rakefile
152
46
  - lib/mongoid-cached-json.rb
153
47
  - lib/mongoid-cached-json/array.rb
154
48
  - lib/mongoid-cached-json/cached_json.rb
@@ -157,34 +51,65 @@ files:
157
51
  - lib/mongoid-cached-json/key_references.rb
158
52
  - lib/mongoid-cached-json/mongoid_criteria.rb
159
53
  - lib/mongoid-cached-json/version.rb
160
- - LICENSE.md
161
- - README.md
54
+ - mongoid-cached-json.gemspec
55
+ - spec/array_spec.rb
56
+ - spec/benchmark_spec.rb
57
+ - spec/cached_json_spec.rb
58
+ - spec/config_spec.rb
59
+ - spec/dalli_spec.rb
60
+ - spec/hash_spec.rb
61
+ - spec/mongoid_criteria_spec.rb
62
+ - spec/spec_helper.rb
63
+ - spec/support/awesome_artwork.rb
64
+ - spec/support/awesome_image.rb
65
+ - spec/support/fast_json_artwork.rb
66
+ - spec/support/fast_json_image.rb
67
+ - spec/support/fast_json_url.rb
68
+ - spec/support/json_embedded_foobar.rb
69
+ - spec/support/json_employee.rb
70
+ - spec/support/json_foobar.rb
71
+ - spec/support/json_manager.rb
72
+ - spec/support/json_math.rb
73
+ - spec/support/json_parent_foobar.rb
74
+ - spec/support/json_polymorphic_embedded_foobar.rb
75
+ - spec/support/json_polymorphic_referenced_foobar.rb
76
+ - spec/support/json_referenced_foobar.rb
77
+ - spec/support/json_supervisor.rb
78
+ - spec/support/json_transform.rb
79
+ - spec/support/matchers/invalidate.rb
80
+ - spec/support/person.rb
81
+ - spec/support/poly_company.rb
82
+ - spec/support/poly_person.rb
83
+ - spec/support/poly_post.rb
84
+ - spec/support/prison_cell.rb
85
+ - spec/support/prison_inmate.rb
86
+ - spec/support/secret_parent.rb
87
+ - spec/support/sometimes_secret.rb
88
+ - spec/support/tool.rb
89
+ - spec/support/tool_box.rb
162
90
  homepage: http://github.com/dblock/mongoid-cached-json
163
91
  licenses:
164
92
  - MIT
93
+ metadata: {}
165
94
  post_install_message:
166
95
  rdoc_options: []
167
96
  require_paths:
168
97
  - lib
169
98
  required_ruby_version: !ruby/object:Gem::Requirement
170
- none: false
171
99
  requirements:
172
- - - ! '>='
100
+ - - ">="
173
101
  - !ruby/object:Gem::Version
174
102
  version: '0'
175
- segments:
176
- - 0
177
- hash: -698501965
178
103
  required_rubygems_version: !ruby/object:Gem::Requirement
179
- none: false
180
104
  requirements:
181
- - - ! '>='
105
+ - - ">="
182
106
  - !ruby/object:Gem::Version
183
- version: '0'
107
+ version: 1.3.6
184
108
  requirements: []
185
109
  rubyforge_project:
186
- rubygems_version: 1.8.24
110
+ rubygems_version: 2.4.5
187
111
  signing_key:
188
- specification_version: 3
189
- summary: Effective model-level JSON caching for the Mongoid ODM.
112
+ specification_version: 4
113
+ summary: Cached-json is a DSL for describing JSON representations of Mongoid models.
190
114
  test_files: []
115
+ has_rdoc: