rails-brotli-cache 0.3.12 → 0.3.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 473f7e06756e422c9c3644f6eb8fbd97fb3c6929d74d5ede901c037c93df7db1
4
- data.tar.gz: 25ce534d47267870cb70eb49ac849f4dc60073944372b3d26fd81a01dd360834
3
+ metadata.gz: cceeb82eb8c194ea2b8acd9fbdcf5a55d53fd6dbdf0f4f9aaf20ae2577fcab2c
4
+ data.tar.gz: 6c2bcade2408e81a303091e782d01239c625c288f63def2a6c40618fedf2bc4d
5
5
  SHA512:
6
- metadata.gz: e13c7a3fb0c0591dbb9dd4ccac8bf97aaf9d51ce1ec1d793fd08c678f6d8ba75b65f45f6612a12bbf8a76fc49d7865f591d466753b0d699f474fd33cc8413ab0
7
- data.tar.gz: 4f0d2fc6e0e2e17e3212a53709fc31831bc62394daad757e1060a323dd46031daaa3ac72be67df254cfd4df8dd71751d31c70567eb217e25ec614dadc29792d3
6
+ metadata.gz: 04bc2568e39f8f398f5cd71fd169570a07ec972d506baf33202738145e48009f6064da385b521671627e058c7fec1115db28b9dd806c0cc123ae0811af9dce5e
7
+ data.tar.gz: f62f95df44c1acb1ceb734299291a68323a7c093b15f7762651faf43a49f83d5e7d80054444d2d63ff38bb2758fc2909836b15b93b50f54c3e0638b2c5456ec1
@@ -23,22 +23,22 @@ module RailsBrotliCache
23
23
  end
24
24
 
25
25
  def fetch(name, options = nil, &block)
26
- value = read(name, options)
27
-
28
- if value.present? && !options&.fetch(:force, false) == true
29
- return value
30
- end
31
-
32
- if block_given?
33
- value = block.call
34
- write(name, value, options)
26
+ options ||= {}
35
27
 
36
- value
37
- elsif options && options[:force]
28
+ if !block_given? && options[:force]
38
29
  raise ArgumentError, "Missing block: Calling `Cache#fetch` with `force: true` requires a block."
39
- else
40
- read(name, options)
41
30
  end
31
+
32
+ uncompressed(
33
+ @core_store.fetch(cache_key(name), options.merge(compress: false)) do
34
+ if block_given?
35
+ compressed(block.call, options)
36
+ else
37
+ nil
38
+ end
39
+ end,
40
+ options
41
+ )
42
42
  end
43
43
 
44
44
  def write(name, value, options = nil)
@@ -130,7 +130,7 @@ module RailsBrotliCache
130
130
  return value if value.is_a?(Integer)
131
131
  serialized = Marshal.dump(value)
132
132
 
133
- if serialized.bytesize >= COMPRESS_THRESHOLD && !options.fetch(:compress) == false
133
+ if serialized.bytesize >= COMPRESS_THRESHOLD && !options.fetch(:compress, true) == false
134
134
  compressor = compressor_class(options, default: @compressor_class)
135
135
  compressed_payload = compressor.deflate(serialized)
136
136
  if compressed_payload.bytesize < serialized.bytesize
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsBrotliCache
4
- VERSION = "0.3.12"
4
+ VERSION = "0.3.14"
5
5
  end
@@ -19,9 +19,9 @@ describe RailsBrotliCache do
19
19
 
20
20
  it "executes block only once" do
21
21
  counter = 0
22
- cache_store.fetch("forced-key") { counter += 1 }
23
- cache_store.fetch("forced-key") { counter += 1 }
24
- expect(cache_store.read("forced-key")).to eq 1
22
+ cache_store.fetch("test-key") { counter += 1 }
23
+ cache_store.fetch("test-key") { counter += 1 }
24
+ expect(cache_store.read("test-key")).to eq 1
25
25
  end
26
26
 
27
27
  context "{ force: true }" do
@@ -38,6 +38,12 @@ describe RailsBrotliCache do
38
38
  expect(cache_store.read("forced-key")).to eq 2
39
39
  end
40
40
  end
41
+
42
+ it "stores value in the configured Rails.cache when options passed" do
43
+ big_enough_to_compress_value = SecureRandom.hex(2048)
44
+ cache_store.fetch("test-key", expires_in: 5.seconds) { big_enough_to_compress_value }
45
+ expect(cache_store.read("test-key")).to eq big_enough_to_compress_value
46
+ end
41
47
  end
42
48
 
43
49
  describe "#increment and #decrement" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-brotli-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawurb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-27 00:00:00.000000000 Z
11
+ date: 2023-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails