Install
$ agentstack add skill-thibautbaissac-rails-ai-agents-caching-strategies ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Caching Strategies for Rails 8
Overview
Rails provides multiple caching layers:
- Fragment caching: Cache view partials
- Russian doll caching: Nested cache fragments
- Low-level caching: Cache arbitrary data
- HTTP caching: Browser and CDN caching
- Query caching: Automatic within requests
Quick Start
# config/environments/development.rb
config.action_controller.perform_caching = true
config.cache_store = :memory_store
# config/environments/production.rb
config.cache_store = :solid_cache_store # Rails 8 default
# OR
config.cache_store = :redis_cache_store, { url: ENV["REDIS_URL"] }
Enable caching in development:
bin/rails dev:cache
Cache Store Options
| Store | Use Case | Pros | Cons | |-------|----------|------|------| | :memory_store | Development | Fast, no setup | Not shared, limited size | | :solid_cache_store | Production (Rails 8) | Database-backed, no Redis | Slightly slower | | :redis_cache_store | Production | Fast, shared | Requires Redis | | :file_store | Simple production | Persistent, no Redis | Slow, not shared | | :null_store | Testing | No caching | N/A |
Fragment Caching
Basic Fragment Cache
Cache Key Components
Rails generates cache keys from:
- Model name
- Model ID
updated_attimestamp- Template digest (automatic)
# Generated key example:
# views/events/123-20240115120000000000/abc123digest
Custom Cache Keys
...
...
Russian Doll Caching
Nested caches where inner caches are reused when outer cache is invalidated:
Use touch: true on belongs_to associations to cascade invalidation up the chain. See [cache-invalidation.md](references/cache-invalidation.md) for examples.
Collection Caching
Efficient Collection Rendering
(event) { [event, current_user.admin?] } %>
Low-Level Caching
Use Rails.cache.fetch with a block for the most common pattern. See [low-level-caching.md](references/low-level-caching.md) for:
- Basic read/write/fetch examples
- Caching in service objects
- Caching in query objects
- Instance variable memoization
- Request-scoped memoization with
CurrentAttributes
Cache Invalidation
Three strategies: time-based expiration, key-based expiration (using updated_at), and manual deletion. See [cache-invalidation.md](references/cache-invalidation.md) for:
- Time-based and key-based expiration
- Manual invalidation in model callbacks and services
- Pattern-based deletion (
delete_matched) touch: truefor Russian doll cascade- Built-in and custom counter caches
HTTP Caching
Use stale? for conditional GET (ETags/Last-Modified) and expires_in for Cache-Control headers. See [http-caching-and-testing.md](references/http-caching-and-testing.md) for full examples.
Testing Caching
Use a :caching metadata tag to enable caching in specs. See [http-caching-and-testing.md](references/http-caching-and-testing.md) for:
rails_helper.rbconfiguration- Testing cached view invalidation
- Testing cache invalidation in services
- Performance monitoring and instrumentation
Checklist
- [ ] Cache store configured for environment
- [ ] Fragment caching on expensive partials
- [ ]
touch: trueon belongs_to for Russian doll - [ ] Collection caching with
cached: true - [ ] Low-level caching for expensive queries
- [ ] Cache invalidation strategy defined
- [ ] Counter caches for counts
- [ ] HTTP caching headers for API
- [ ] Cache warming for cold starts (if needed)
- [ ] Monitoring for hit/miss rates
References
- [low-level-caching.md](references/low-level-caching.md) - fetch/read/write, service objects, query objects, memoization
- [cache-invalidation.md](references/cache-invalidation.md) - expiration strategies, manual invalidation, touch, counter caches
- [http-caching-and-testing.md](references/http-caching-and-testing.md) - ETags, Cache-Control, spec configuration, monitoring
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ThibautBaissac
- Source: ThibautBaissac/railsai_agents
- License: MIT
- Homepage: https://thibautbaissac.github.io/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.