Mudis is a lightweight, Ruby-native, in-memory cache intended for:
- Singleton per-process or per-thread caching
- Fast LRU eviction with optional compression
- Clear and observable behavior
- Configuration via Ruby DSL
- No external services or runtime dependencies
Mudis is not a distributed system, nor a replacement for Redis or Memcached.
Before submitting an issue or pull request, please read the following:
| In-Scope ✅ | Out-of-Scope ❌ |
|---|---|
| In-process memory cache | Multi-node or clustered caches |
| Observability features | Built-in persistence or disk-based storage |
| Compression + serialization | Language-agnostic protocol support |
| Namespacing, TTL, limits | Background sync across nodes |
| Thread safety | Network daemons or long-running cache servers |
If you're exploring a feature outside the scope, we recommend building on top of Mudis or forking to suit your architecture.
-
Fork the repo and create your feature branch:
git checkout -b my-feature -
Write clear, test-covered code using RSpec and Rubocop standards
-
Document your changes, especially in:
README.mdfor featuresCHANGELOG.mdfor version updates
-
Run the test suite
bundle install
bundle exec rspec- Push your branch and open a Pull Request
git clone https://github.com/your-name/mudis.git
cd mudis
bundle install
bundle exec rspecTo run the full test suite with coverage reporting:
rake coverageThis will:
- Execute all RSpec tests
- Generate a coverage report
- Automatically open the HTML coverage report in your browser
The coverage report is saved to coverage/index.html and shows line-by-line test coverage.
- Follow the existing naming and structure patterns
- Keep the core class lean and testable
- Avoid side effects in configuration
- All public methods must be tested
- Features that introduce persistence, cluster sync, or background services
- HTTP/daemon layers inside the core gem (consider a separate project)
- Language-agnostic interface requests (Mudis is Ruby-first)
- PRs with no tests or documentation