Release v3.3.0
This release brings comprehensive documentation, Rails 8.0/8.1/8.2 support, PostgreSQL 17/18 support, RuboCop compliance, improved test coverage, and multiple bug fixes.
What's Changed
- Relax
public_suffixdependency from<= 6.0.1to< 7by @oleksii-leonov in #320 - Update ActiveRecord and ActiveSupport dependencies for Rails 8.2 comp… by @moskvin in #329
- Add comprehensive documentation for Apartment v3 by @mnovelo in #330
- Release v3.3.0 by @mnovelo in #331
New Contributors
📦 Version Bump
3.1.0 → 3.3.0
⚠️ Breaking Changes
Rails 6.1 Support Dropped
- Removed Rails 6.1 test configurations and Appraisal gemfiles
- Minimum supported Rails version remains 6.1.0 in gemspec, but no longer actively tested
- Rails 7.0+ is now the recommended minimum version
📚 Major Improvements
Documentation (#330)
- Added comprehensive CLAUDE.md documentation files throughout codebase
- New
docs/architecture.md- Core design decisions and rationale - New
docs/adapters.md- Database strategy trade-offs - New
docs/elevators.md- Middleware design patterns - Added
CODE_OF_CONDUCT.md - Renamed
CHANGELOG.mdtolegacy_CHANGELOG.md
Rails Support
- ✅ Rails 8.0 support (#309)
- ✅ Rails 8.1 support (via Appraisals)
- ✅ Rails 8.2 compatibility (#329)
- ✅ Rails 7.2 support (#278)
- ❌ Rails 6.1 no longer tested (removed from CI/Appraisals)
PostgreSQL Support
- ✅ PostgreSQL 17 support (#289) - transaction_timeout statement handling
- ✅ PostgreSQL 18 support (GitHub Actions workflow added)
- Fixed PostgreSQL 17.6+ meta-commands (
\restrict,\unrestrict) via catch-all pattern (#330)
Code Quality
- ✅ Complete RuboCop compliance - removed
.rubocop_todo.yml(#330) - ✅ Enhanced
.rubocop.ymlwith proper cops configuration - ✅ All rake tasks fixed with
:environmentdependency (#315 via #330) - ✅ Frozen string literals enforced throughout
- ✅ Consistent method call parentheses
Testing & CI/CD
- Split specs by database version (#292)
- MySQL specs fixed and CodeCov added (#295)
- Improved coverage tracking (#296, #297)
- Split GitHub Actions workflows by PostgreSQL version (14, 15, 16, 17, 18)
- Split workflows by MySQL version (8.0)
- Simplified gem publishing workflow (#330)
- Removed stale issue bot (#330)
🐛 Bug Fixes
- #315: Rake tasks now properly load Rails environment (fixes
tenant_namesdynamic queries) - #290: Fixed ActiveRecord monkeypatch breaking Solid Cache
- #291: Fixed "Deprecation cannot find version" error
- #289: Ignore
transaction_timeoutstatement in PostgreSQL 17 - #293: Match custom default tenant on
PSQL_DUMP_BLACKLISTED_STATEMENTS - #276: Prevent Rails 7.1
create_schemafrom being added todb/schema.rb - #203: Properly reset sequence when switching with multiple schemas
- #184: Exclude default tenant table if it exists in procedure
🔧 Dependencies
- #320: Relaxed
public_suffixdependency from<= 6.0.1to< 7 - #281: Support
public_suffixmajor version 6 - #307: Removed upper bound for Ruby version
- #329: Updated ActiveRecord/ActiveSupport dependencies for Rails 8.2
⚡ Performance & Concurrency
- #288: Use
Rails.application.executor.wrapin Threads (proper Rails executor integration)
🏗️ Infrastructure
Appraisals
Updated test matrix (Rails 6.1 removed):
- Rails 7.0, 7.1, 7.2, 8.0, 8.1 × PostgreSQL, MySQL, SQLite3
- JDBC variants for Rails 7.0 (jdbc_mysql, jdbc_postgresql, jdbc_sqlite3)
GitHub Actions
- Workflow per PostgreSQL version (14, 15, 16, 17, 18)
- Workflow for MySQL 8.0
- Workflow for SQLite3
- Simplified gem publishing workflow
- All workflows use appraisal for correct Rails version testing
📝 Issues Closed
This release closes the following issues:
#330, #329, #328, #326, #322, #320, #315, #311, #310, #309, #307, #297, #296, #295, #293, #292, #291, #290, #289, #288, #281, #278, #276, #203, #184
🚀 Upgrade Path
From 3.1.0 to 3.3.0: No breaking changes for Rails 7.0+ users. Drop-in replacement.
Rails 6.1 users: While the gemspec still allows Rails 6.1, it's no longer tested in CI. Upgrade to Rails 7.0+ recommended.
What to check after upgrading:
- Rails 6.1 users: Consider upgrading to Rails 7.0+ for continued support
- Run
bundle exec rubocopif using RuboCop (gem now compliant) - Test rake tasks (
apartment:create,apartment:migrate, etc.) - now properly load Rails environment - Verify PostgreSQL 17/18 compatibility if using those versions
- Rails 8.0/8.1/8.2 users - ensure
activesupportdependency resolves correctly
📖 Documentation
New users should start with:
README.md- Installation and basic usageCLAUDE.md- Project overview and WHY documentation philosophydocs/architecture.md- Core design decisionsdocs/adapters.md- Database strategy trade-offsdocs/elevators.md- Middleware patterns
🙏 Contributors
Thanks to @oleksii-leonov and @moskvin for their contributions, and to all community members who reported issues and provided feedback.
Full Changelog: v3.1.0...v3.3.0