cached_resource 5.2.0 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/gemfiles/4.2.gemfile.lock +1 -1
- data/gemfiles/5.0.gemfile.lock +1 -1
- data/gemfiles/5.1.gemfile.lock +1 -1
- data/lib/cached_resource/caching.rb +8 -0
- data/lib/cached_resource/configuration.rb +4 -2
- data/lib/cached_resource/version.rb +1 -1
- data/spec/cached_resource/caching_spec.rb +33 -0
- data/spec/cached_resource/configuration_spec.rb +12 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7102fd60421cc8ddea333b62047f5bf15dcc07e1ac38444084f8815d728ad386
|
4
|
+
data.tar.gz: 51e3b4a15b4094cdcfeda312a10b44aaff7f1da7143020c5100cd55b7f8dd22e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 789e3ab01ffa4dd155a7587cab2d6f92455c0e9a8e2d8ce429b562c626be43eaadbfda3a44d13e09cb998c5e51805042eb7cd7463adc6b7f1e8cc25e2e77628e
|
7
|
+
data.tar.gz: 636d931d7de4ab7068d3f68704c4832f6216be8b0d7d50cc28797fb55389e8d2b0199b78685b57d5c48f8d596c6bf0e96a58f24d75a2a9b89467688de90140b3
|
data/README.md
CHANGED
@@ -53,6 +53,7 @@ CachedResource accepts the following options:
|
|
53
53
|
* `:collection_arguments` The arguments that identify the principal collection request. Default: `[:all]`
|
54
54
|
* `:logger` The logger to which CachedResource messages should be written. Default: The `Rails.logger` if available, or an `ActiveSupport::Logger`
|
55
55
|
* `:cache` The cache store that CacheResource should use. Default: The `Rails.cache` if available, or an `ActiveSupport::Cache::MemoryStore`
|
56
|
+
* `:cache_collections` Set to false to always remake a request for collections. Default: `true`
|
56
57
|
|
57
58
|
You can set them like this:
|
58
59
|
|
data/gemfiles/4.2.gemfile.lock
CHANGED
data/gemfiles/5.0.gemfile.lock
CHANGED
data/gemfiles/5.1.gemfile.lock
CHANGED
@@ -17,6 +17,7 @@ module CachedResource
|
|
17
17
|
def find_with_cache(*arguments)
|
18
18
|
arguments << {} unless arguments.last.is_a?(Hash)
|
19
19
|
should_reload = arguments.last.delete(:reload) || !cached_resource.enabled
|
20
|
+
should_reload = true if !cached_resource.cache_collections && is_any_collection?(*arguments)
|
20
21
|
arguments.pop if arguments.last.empty?
|
21
22
|
key = cache_key(arguments)
|
22
23
|
|
@@ -41,6 +42,7 @@ module CachedResource
|
|
41
42
|
def find_via_reload(key, *arguments)
|
42
43
|
object = find_without_cache(*arguments)
|
43
44
|
cache_collection_synchronize(object, *arguments) if cached_resource.collection_synchronize
|
45
|
+
return object if !cached_resource.cache_collections && is_any_collection?(*arguments)
|
44
46
|
cache_write(key, object)
|
45
47
|
cache_read(key)
|
46
48
|
end
|
@@ -82,6 +84,12 @@ module CachedResource
|
|
82
84
|
arguments == cached_resource.collection_arguments
|
83
85
|
end
|
84
86
|
|
87
|
+
# Determine if the given arguments represent
|
88
|
+
# any collection of objects
|
89
|
+
def is_any_collection?(*arguments)
|
90
|
+
cached_resource.collection_arguments.all?{ |arg| arguments.include?(arg) } || arguments.include?(:all)
|
91
|
+
end
|
92
|
+
|
85
93
|
# Read a entry from the cache for the given key.
|
86
94
|
def cache_read(key)
|
87
95
|
object = cached_resource.cache.read(key).try do |json_cache|
|
@@ -22,7 +22,8 @@ module CachedResource
|
|
22
22
|
# :collection_synchronize, default: false,
|
23
23
|
# :collection_arguments, default: [:all]
|
24
24
|
# :cache, default: Rails.cache or ActiveSupport::Cache::MemoryStore.new,
|
25
|
-
# :logger, default: Rails.logger or ActiveSupport::Logger.new(NilIO.new)
|
25
|
+
# :logger, default: Rails.logger or ActiveSupport::Logger.new(NilIO.new),
|
26
|
+
# :cache_collections, default: true
|
26
27
|
def initialize(options={})
|
27
28
|
super({
|
28
29
|
:enabled => true,
|
@@ -33,7 +34,8 @@ module CachedResource
|
|
33
34
|
:collection_synchronize => false,
|
34
35
|
:collection_arguments => [:all],
|
35
36
|
:cache => defined?(Rails.cache) && Rails.cache || CACHE,
|
36
|
-
:logger => defined?(Rails.logger) && Rails.logger || LOGGER
|
37
|
+
:logger => defined?(Rails.logger) && Rails.logger || LOGGER,
|
38
|
+
:cache_collections => true
|
37
39
|
}.merge(options))
|
38
40
|
end
|
39
41
|
|
@@ -565,4 +565,37 @@ describe CachedResource do
|
|
565
565
|
new_result.name.should_not == old_result.name
|
566
566
|
end
|
567
567
|
end
|
568
|
+
|
569
|
+
describe "when cache_collections is disabled" do
|
570
|
+
before(:each) do
|
571
|
+
Thing.cached_resource.cache.clear
|
572
|
+
Thing.cached_resource.cache_collections = false
|
573
|
+
|
574
|
+
ActiveResource::HttpMock.reset!
|
575
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
576
|
+
mock.get "/things.json", {}, [@thing[:thing],@string_thing[:thing]].to_json(:root => :thing)
|
577
|
+
mock.get "/things/1.json", {}, @thing_json
|
578
|
+
mock.get "/things/fded.json", {}, @string_thing_json
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
it "should cache a response" do
|
583
|
+
result = Thing.find(1)
|
584
|
+
read_from_cache("thing/1").should == result
|
585
|
+
end
|
586
|
+
|
587
|
+
it "should not remake a single request" do
|
588
|
+
result = Thing.find(1)
|
589
|
+
ActiveResource::HttpMock.requests.length.should == 1
|
590
|
+
result = Thing.find(1)
|
591
|
+
ActiveResource::HttpMock.requests.length.should == 1
|
592
|
+
end
|
593
|
+
|
594
|
+
it "should always remake the request for collections" do
|
595
|
+
Thing.all
|
596
|
+
ActiveResource::HttpMock.requests.length.should == 1
|
597
|
+
Thing.all
|
598
|
+
ActiveResource::HttpMock.requests.length.should == 2
|
599
|
+
end
|
600
|
+
end
|
568
601
|
end
|
@@ -22,6 +22,10 @@ describe "CachedResource::Configuration" do
|
|
22
22
|
configuration.collection_arguments.should == [:all]
|
23
23
|
end
|
24
24
|
|
25
|
+
it "should cache collections" do
|
26
|
+
configuration.cache_collections == true
|
27
|
+
end
|
28
|
+
|
25
29
|
describe "outside a Rails environment" do
|
26
30
|
it "should be logging to a buffered logger attached to a NilIO" do
|
27
31
|
configuration.logger.class.should == default_logger
|
@@ -72,7 +76,8 @@ describe "CachedResource::Configuration" do
|
|
72
76
|
:enabled => false,
|
73
77
|
:collection_synchronize => true,
|
74
78
|
:collection_arguments => [:every],
|
75
|
-
:custom => "irrelevant"
|
79
|
+
:custom => "irrelevant",
|
80
|
+
:cache_collections => true
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
@@ -90,6 +95,7 @@ describe "CachedResource::Configuration" do
|
|
90
95
|
cr.collection_synchronize.should == true
|
91
96
|
cr.collection_arguments.should == [:every]
|
92
97
|
cr.custom.should == "irrelevant"
|
98
|
+
cr.cache_collections.should == true
|
93
99
|
end
|
94
100
|
end
|
95
101
|
|
@@ -130,7 +136,8 @@ describe "CachedResource::Configuration" do
|
|
130
136
|
:enabled => false,
|
131
137
|
:collection_synchronize => true,
|
132
138
|
:collection_arguments => [:every],
|
133
|
-
:custom => "irrelevant"
|
139
|
+
:custom => "irrelevant",
|
140
|
+
:cache_collections => true
|
134
141
|
end
|
135
142
|
|
136
143
|
class Foo < Bar
|
@@ -158,7 +165,8 @@ describe "CachedResource::Configuration" do
|
|
158
165
|
:enabled => false,
|
159
166
|
:collection_synchronize => true,
|
160
167
|
:collection_arguments => [:every],
|
161
|
-
:custom => "irrelevant"
|
168
|
+
:custom => "irrelevant",
|
169
|
+
:cache_collections => true
|
162
170
|
end
|
163
171
|
|
164
172
|
class Foo < Bar
|
@@ -186,6 +194,7 @@ describe "CachedResource::Configuration" do
|
|
186
194
|
cr.custom.should == nil
|
187
195
|
cr.ttl_randomization.should == false
|
188
196
|
cr.ttl_randomization_scale.should == (1..2)
|
197
|
+
cr.cache_collections.should == true
|
189
198
|
expect(cr.race_condition_ttl).to eq(86400)
|
190
199
|
end
|
191
200
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cached_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Morgan Brown
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
rubygems_version: 3.0.
|
146
|
+
rubygems_version: 3.0.9
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Caching for ActiveResource
|