Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
a9e0e84
update dependency version floors for ruby 3.4 compatibility
Esity Mar 13, 2026
c1cc89a
rubocop -A auto-corrections
Esity Mar 13, 2026
f3757ad
add spec exclusion for metrics/blocklength
Esity Mar 13, 2026
4a68adf
reindex documentation to reflect current codebase
Esity Mar 13, 2026
761a5fa
add unit tests that work without live servers
Esity Mar 13, 2026
0fbfa64
resolve rubocop offenses with auto-correct
Esity Mar 13, 2026
d29f065
fix module public interface using extend self instead of module_function
Esity Mar 13, 2026
2c3ec95
switch to org-level reusable ci workflow
Esity Mar 13, 2026
c24f578
reindex documentation to reflect current codebase state
Esity Mar 13, 2026
f130b47
fix memcached connection pool and error handling, ignore legion.log
Esity Mar 14, 2026
2d971c9
trigger ci with updated shared workflow
Esity Mar 15, 2026
fc75bda
remove tracked legion.log file
Esity Mar 15, 2026
4975b78
add release job to ci workflow
Esity Mar 15, 2026
31b5056
set dalli value_max_bytes to 8mb by default
Esity Mar 16, 2026
a93035b
reindex docs: update README and CLAUDE.md for v1.2.1
Esity Mar 16, 2026
4aadafd
add Settings.local defaults for local cache tier
Esity Mar 16, 2026
63adf19
add Legion::Cache::Local module with driver delegation
Esity Mar 16, 2026
46b3aa7
add integration tests for Legion::Cache::Local
Esity Mar 16, 2026
d62adf7
add fallback wiring from shared cache to local
Esity Mar 16, 2026
25472e5
bump to 1.3.0, add changelog and docs for cache local
Esity Mar 16, 2026
cbe8d70
update readme for v1.3.0 with two-tier cache docs
Esity Mar 16, 2026
36d2cfa
add needs-memcached to ci: fixes dalli ring errors in test suite
Esity Mar 17, 2026
40ca03b
reindex documentation to reflect current codebase state
Esity Mar 19, 2026
88c439f
add normalize_driver to map memcached/dalli/redis to gem names
Esity Mar 20, 2026
cd00419
add resolve_servers with per-driver default ports and dedup
Esity Mar 20, 2026
c6fae53
use resolve_servers for driver-aware default server lists
Esity Mar 20, 2026
87aaab1
use normalize_driver for cache driver selection at load time
Esity Mar 20, 2026
83e683d
use normalize_driver in local cache build_driver
Esity Mar 20, 2026
e230122
fix redis driver to use configured servers via resolve_servers
Esity Mar 20, 2026
b9321d9
wire memcached driver through resolve_servers for port injection and …
Esity Mar 20, 2026
6494ab3
bump to 1.3.1, add changelog and docs for driver normalization
Esity Mar 20, 2026
580a6e7
Merge pull request #1 from LegionIO/feature/cache-driver-normalization
Esity Mar 20, 2026
d751da9
add .worktrees to gitignore
Esity Mar 20, 2026
7fd37f0
add cacheable memory store with ttl expiry
Esity Mar 20, 2026
df8895c
add deterministic cache key builder with arg filtering
Esity Mar 20, 2026
7d58593
add cache read/write dispatcher with local, global, and memory fallback
Esity Mar 20, 2026
ed6d012
add cache_method dsl with prepend wrapper and bypass mechanism
Esity Mar 20, 2026
36b4212
wire cacheable into legion-cache require chain
Esity Mar 20, 2026
db7f95a
bump to 1.3.2, add changelog and docs for cacheable
Esity Mar 20, 2026
b797ad0
fix serializer option not flowing through to Dalli::Client
Esity Mar 21, 2026
b3062a4
add redis cluster mode support (v1.3.4)
Esity Mar 21, 2026
bb6ca5d
feat: add TLS support to Redis and Memcached cache drivers
Esity Mar 22, 2026
f4b525e
add redis cluster mode support: replica, mget/mset, failover logging
Esity Mar 22, 2026
9cbf1a5
add comprehensive logging across cache operations
Esity Mar 22, 2026
f6cd0e7
add server addresses to boot connection logs
Esity Mar 22, 2026
80938cc
add logging to silent rescue blocks
Esity Mar 22, 2026
14aec95
update gemspec dependency version constraints
Esity Mar 22, 2026
8586708
add Legion::Cache::Helper module for injectable cache mixin (v1.3.11)
Esity Mar 23, 2026
e31b155
feat: add Memory adapter for lite mode
Esity Mar 24, 2026
f08e02b
reindex docs: update to v1.3.12, add Memory adapter and Helper mixin …
Esity Mar 24, 2026
ec843bd
bump version to 1.3.13 for release
Esity Mar 24, 2026
cd5c841
add username, password, db, reconnect_attempts to Redis client options
Esity Mar 24, 2026
5883d9a
add PHI-aware cache TTL policy (phi_max_ttl enforcement)
Esity Mar 24, 2026
1b8bf01
bump version to 1.3.15, update CHANGELOG for PHI cache TTL policy
Esity Mar 25, 2026
982bc36
fix cache set ttl argument handling
Esity Mar 25, 2026
cf628d0
restore needs-redis and needs-memcached in ci workflow
Esity Mar 25, 2026
30752c2
add repo governance files (CODEOWNERS, dependabot, CI)
Esity Mar 25, 2026
a751f5f
add redis hash and sorted set operations for hot tier support (v1.3.17)
Esity Mar 25, 2026
4251ca5
update project documentation
Esity Mar 29, 2026
649578b
enhance cache helper with layered TTL, PHI support, status, and pool …
Esity Mar 30, 2026
591a760
apply copilot review suggestions (#5)
Esity Mar 30, 2026
23f6335
Merge pull request #5 from LegionIO/feature/enhance-cache-helper
Esity Mar 30, 2026
07b8b45
add batch and redis hash helper methods (#3, #4)
Esity Mar 31, 2026
8aef88c
Merge pull request #6 from LegionIO/feature/issues-3-4
Esity Mar 31, 2026
79de3a4
fix redis timeout and reconnect settings not forwarded to client
Esity Apr 1, 2026
2886905
Merge pull request #7 from LegionIO/fix/redis-timeout-and-reconnect
Esity Apr 1, 2026
407f286
uplift cache runtime logging
Esity Apr 2, 2026
4380b57
update logging uplift specs
Esity Apr 2, 2026
e35e8d2
bump version to 1.3.21
Esity Apr 2, 2026
4025a37
fix cache backend runtime selection
Esity Apr 2, 2026
1a644d6
add cache regression coverage
Esity Apr 2, 2026
31724a4
make default rspec suite hermetic
Esity Apr 2, 2026
844d426
update changelog for v1.3.21
Esity Apr 2, 2026
b476d9a
bump legion-logging requirement
Esity Apr 2, 2026
d181f33
apply copilot review suggestions (#13)
Esity Apr 2, 2026
7da4f77
apply copilot review suggestions (#13)
Esity Apr 2, 2026
692cadb
apply copilot review suggestions (#13)
Esity Apr 2, 2026
13a79c9
Merge pull request #13 from LegionIO/dev-v1-3-21
Esity Apr 2, 2026
ac4b197
fix stale default servers overriding user-configured cache host
Esity Apr 3, 2026
606d74d
add cache optimization design doc
Esity Apr 6, 2026
342572c
add cache optimization implementation plan
Esity Apr 6, 2026
4ce8998
update default TTL to 3600 global, 21600 local
Esity Apr 6, 2026
cf024ba
unify memcached driver method signatures
Esity Apr 6, 2026
ffcfb35
unify redis driver method signatures
Esity Apr 6, 2026
6db3a0b
unify memory adapter method signatures
Esity Apr 6, 2026
ba2769a
unify local tier method signatures
Esity Apr 6, 2026
5f14e03
unify top-level cache method signatures
Esity Apr 6, 2026
3a81259
add uniform exception handling across all drivers
Esity Apr 6, 2026
cfd35f7
revise design doc with adversarial review round 1 fixes
Esity Apr 6, 2026
597b43b
add exception handling to local tier and top-level cache
Esity Apr 6, 2026
bf7172b
add transparent JSON serialization for redis driver
Esity Apr 6, 2026
6c26a1a
add enabled? guard to both cache tiers
Esity Apr 6, 2026
57ec731
add post-optimization fixes plan (adversarial review + connection pool)
Esity Apr 6, 2026
31cc6ad
add stats method to both cache tiers
Esity Apr 6, 2026
562c4a2
add concurrent-ruby dependency for async writer
Esity Apr 6, 2026
5a96144
add failback-to-local task to post-optimization plan
Esity Apr 6, 2026
ce1e303
add async writer with concurrent-ruby thread pool
Esity Apr 6, 2026
2339edf
wire async writer into cache and local tiers
Esity Apr 6, 2026
686c6f7
add reconnector with exponential backoff
Esity Apr 6, 2026
51922f2
wire reconnector into cache lifecycle
Esity Apr 6, 2026
f99b73f
update post-optimization fixes plan with gap review tasks (B3-B6, B8)
Esity Apr 6, 2026
8940896
update helper module for keyword ttl signatures
Esity Apr 6, 2026
7917008
update cacheable module for keyword ttl
Esity Apr 6, 2026
dffb180
add async and reconnect defaults to settings
Esity Apr 6, 2026
3e932d7
bump version to 1.4.0, fix remaining spec and rubocop offenses
Esity Apr 6, 2026
e53d594
Merge branch 'feature/cache-optimization'
Esity Apr 6, 2026
2b872c4
apply adversarial review fixes to memory adapter
Esity Apr 6, 2026
19c7eee
apply post-optimization adversarial review fixes and connection pool …
Esity Apr 6, 2026
9d75c78
suppress pre-existing rubocop metrics offenses on client methods
Esity Apr 6, 2026
ec7a5f4
remove plan docs from tracking
Esity Apr 6, 2026
909d231
add failback_to_local? branch to mget and mset_sync for consistent bu…
Esity Apr 6, 2026
34ccde9
use normalized @pool_size in memcached ConnectionPool.new to prevent …
Esity Apr 6, 2026
d035368
Merge pull request #14 from LegionIO/feature/cache-post-optimization
Esity Apr 6, 2026
80547b6
fleet(cache): add set_nx to all three cache drivers
Esity Apr 13, 2026
c7d1ced
bump version to 1.4.2 for fleet set_nx addition
Esity Apr 14, 2026
7b0c595
Merge pull request #15 from LegionIO/fleet/ws-00g-cache-set-nx
Esity Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Auto-generated from team-config.yml
# Team: core
#
# To apply: scripts/apply-codeowners.sh legion-cache

* @LegionIO/maintainers
* @LegionIO/core
18 changes: 18 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
version: 2
updates:
- package-ecosystem: bundler
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
labels:
- "type:dependencies"
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
labels:
- "type:dependencies"
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CI
on:
push:
branches: [main]
pull_request:
schedule:
- cron: '0 9 * * 1'

jobs:
ci:
uses: LegionIO/.github/.github/workflows/ci.yml@main
with:
needs-redis: true
needs-memcached: true

lint:
uses: LegionIO/.github/.github/workflows/lint-patterns.yml@main

security:
uses: LegionIO/.github/.github/workflows/security-scan.yml@main

version-changelog:
uses: LegionIO/.github/.github/workflows/version-changelog.yml@main

dependency-review:
uses: LegionIO/.github/.github/workflows/dependency-review.yml@main

stale:
if: github.event_name == 'schedule'
uses: LegionIO/.github/.github/workflows/stale.yml@main

release:
needs: [ci, lint]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: LegionIO/.github/.github/workflows/release.yml@main
secrets:
rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
28 changes: 0 additions & 28 deletions .github/workflows/rubocop-analysis.yml

This file was deleted.

20 changes: 0 additions & 20 deletions .github/workflows/sourcehawk-scan.yml

This file was deleted.

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@
# rspec failure tracking
.rspec_status
legionio.key
# logs and OS artifacts
legion.log
.DS_Store
.worktrees/
57 changes: 42 additions & 15 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,53 @@
AllCops:
TargetRubyVersion: 3.4
NewCops: enable
SuggestExtensions: false

Layout/LineLength:
Max: 120
Exclude:
- 'legion-cache.gemspec'
Max: 160

Layout/SpaceAroundEqualsInParameterDefault:
EnforcedStyle: space

Layout/HashAlignment:
EnforcedHashRocketStyle: table
EnforcedColonStyle: table

Metrics/MethodLength:
Max: 30
Max: 50

Metrics/ClassLength:
Max: 1500

Metrics/ModuleLength:
Max: 1500

Metrics/BlockLength:
Max: 50
Max: 40
Exclude:
- 'spec/*/**.rb'
- 'spec/**/*'

Metrics/AbcSize:
Max: 18
Max: 60

Metrics/CyclomaticComplexity:
Max: 15

Metrics/PerceivedComplexity:
Max: 17

Style/Documentation:
Enabled: false
Style/ModuleFunction:
Enabled: false
AllCops:
TargetRubyVersion: 2.6
NewCops: enable
SuggestExtensions: false

Style/SymbolArray:
Enabled: true

Style/FrozenStringLiteralComment:
Enabled: true
EnforcedStyle: always

Naming/FileName:
Enabled: false

Naming/PredicateMethod:
Enabled: false
Gemspec/RequiredRubyVersion:
Enabled: false
Loading
Loading