Skip to content

v3.3.0

Latest

Choose a tag to compare

@mnovelo mnovelo released this 24 Nov 20:15
· 0 commits to development since this release
2f23537

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_suffix dependency from <= 6.0.1 to < 7 by @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.md to legacy_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.yml with proper cops configuration
  • ✅ All rake tasks fixed with :environment dependency (#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_names dynamic queries)
  • #290: Fixed ActiveRecord monkeypatch breaking Solid Cache
  • #291: Fixed "Deprecation cannot find version" error
  • #289: Ignore transaction_timeout statement in PostgreSQL 17
  • #293: Match custom default tenant on PSQL_DUMP_BLACKLISTED_STATEMENTS
  • #276: Prevent Rails 7.1 create_schema from being added to db/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_suffix dependency from <= 6.0.1 to < 7
  • #281: Support public_suffix major 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.wrap in 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:

  1. Rails 6.1 users: Consider upgrading to Rails 7.0+ for continued support
  2. Run bundle exec rubocop if using RuboCop (gem now compliant)
  3. Test rake tasks (apartment:create, apartment:migrate, etc.) - now properly load Rails environment
  4. Verify PostgreSQL 17/18 compatibility if using those versions
  5. Rails 8.0/8.1/8.2 users - ensure activesupport dependency resolves correctly

📖 Documentation

New users should start with:

  1. README.md - Installation and basic usage
  2. CLAUDE.md - Project overview and WHY documentation philosophy
  3. docs/architecture.md - Core design decisions
  4. docs/adapters.md - Database strategy trade-offs
  5. docs/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