legion-cache 1.3.10 → 1.3.11

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: 55564d67820fd4fe967dda95b7bc33d6c52fb78db138513a3dc2112766ca6154
4
- data.tar.gz: 13fdaa235bba02a090b20b7b9b500099f41c660e0ad492ec1d19bcec9e8b0db0
3
+ metadata.gz: 6290bf41f9c5aad922d9ff00e8fe1cac6f6ac5118757ffc1acc55b0aaac05a18
4
+ data.tar.gz: da4e9d085dd567bb262a58be3d08cf81de1575ddc9b0a0d7db569dc67d81c923
5
5
  SHA512:
6
- metadata.gz: bd16d23507c10117ffd1acab7d286fcde27e2843b264c6a60e45b3825b159cee2c865746aee8800187e964144e2b3b57b0ea1909246afabab0ed1bfc4f59a14f
7
- data.tar.gz: 4d4572b182caf141e0033cb2fd4068406c74889fd0c9cf737cc18a89139cc50c13761b42c69760415a2e45b4831ea80900f3f9be8e7bfa71a2ee76355d951988
6
+ metadata.gz: aba95d900562d5f09c9ff9283e4306c5f66c0e56b66bea60b4720eacaa4744239f6a758dca1061f3e18053ecd9df45b386ad986ba91e228a5ffdb750f32b5068
7
+ data.tar.gz: 3a1e54d25d17354b4c3a6ec30e2f977bf36e2d89efd2b16d483e86a4a0cf47ad115497b865706060f5f309941135f028d8331dd05178e54fc616da19b5465b88
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.11] - 2026-03-22
4
+
5
+ ### Added
6
+ - `Legion::Cache::Helper` module: injectable cache mixin for LEX extensions
7
+ - Namespaced `cache_set`, `cache_get`, `cache_delete`, `cache_fetch` for shared cache
8
+ - Namespaced `local_cache_set`, `local_cache_get`, `local_cache_delete`, `local_cache_fetch` for per-node local cache
9
+
3
10
  ## [1.3.10] - 2026-03-22
4
11
 
5
12
  ### Changed
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Cache
5
+ module Helper
6
+ def cache_namespace
7
+ @cache_namespace ||= derive_cache_namespace
8
+ end
9
+
10
+ def cache_set(key, value, ttl: 60)
11
+ Legion::Cache.set(cache_namespace + key, value, ttl)
12
+ end
13
+
14
+ def cache_get(key)
15
+ Legion::Cache.get(cache_namespace + key)
16
+ end
17
+
18
+ def cache_delete(key)
19
+ Legion::Cache.delete(cache_namespace + key)
20
+ end
21
+
22
+ def cache_fetch(key, ttl: 60, &)
23
+ Legion::Cache.fetch(cache_namespace + key, ttl, &)
24
+ end
25
+
26
+ def local_cache_set(key, value, ttl: 60)
27
+ Legion::Cache::Local.set(cache_namespace + key, value, ttl)
28
+ end
29
+
30
+ def local_cache_get(key)
31
+ Legion::Cache::Local.get(cache_namespace + key)
32
+ end
33
+
34
+ def local_cache_delete(key)
35
+ Legion::Cache::Local.delete(cache_namespace + key)
36
+ end
37
+
38
+ def local_cache_fetch(key, ttl: 60, &)
39
+ Legion::Cache::Local.fetch(cache_namespace + key, ttl, &)
40
+ end
41
+
42
+ private
43
+
44
+ def derive_cache_namespace
45
+ if respond_to?(:lex_filename)
46
+ fname = lex_filename
47
+ fname.is_a?(Array) ? fname.first : fname
48
+ else
49
+ derive_cache_namespace_from_class
50
+ end
51
+ end
52
+
53
+ def derive_cache_namespace_from_class
54
+ name = respond_to?(:ancestors) ? ancestors.first.to_s : self.class.to_s
55
+ parts = name.split('::')
56
+ ext_idx = parts.index('Extensions')
57
+ target = if ext_idx && parts[ext_idx + 1]
58
+ parts[ext_idx + 1]
59
+ else
60
+ parts.last
61
+ end
62
+ target.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
63
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
64
+ .downcase
65
+ end
66
+ end
67
+ end
68
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Cache
5
- VERSION = '1.3.10'
5
+ VERSION = '1.3.11'
6
6
  end
7
7
  end
data/lib/legion/cache.rb CHANGED
@@ -7,6 +7,7 @@ require 'legion/cache/cacheable'
7
7
  require 'legion/cache/memcached'
8
8
  require 'legion/cache/redis'
9
9
  require 'legion/cache/local'
10
+ require 'legion/cache/helper'
10
11
 
11
12
  module Legion
12
13
  module Cache
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.10
4
+ version: 1.3.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -101,6 +101,7 @@ files:
101
101
  - legion-cache.gemspec
102
102
  - lib/legion/cache.rb
103
103
  - lib/legion/cache/cacheable.rb
104
+ - lib/legion/cache/helper.rb
104
105
  - lib/legion/cache/local.rb
105
106
  - lib/legion/cache/memcached.rb
106
107
  - lib/legion/cache/pool.rb