Skip to content

Releases: rails-on-services/apartment

v3.4.1

22 Dec 17:29
d80c8d8

Choose a tag to compare

What's Changed

  • Add RELEASING.md documenting the gem release process by @mnovelo in #336
  • Fix multi-database rake tasks and connection pool isolation (v3.4.1) by @mnovelo in #337
  • Release v3.4.1 by @mnovelo in #338

Full Changelog: v3.4.0...v3.4.1

v3.4.0

16 Dec 15:54
e88e7f3

Choose a tag to compare

What's Changed

  • Add platform-aware parallel migrations with advisory lock management (v3.4.0) by @mnovelo in #334
  • Release v3.4.0 by @mnovelo in #335

Full Changelog: v3.3.0...v3.4.0

v3.3.0

24 Nov 20:15
2f23537

Choose a tag to compare

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

v3.2.0

09 Jan 16:19
2fb25d4

Choose a tag to compare

Disclaimer

This release introduces support for Rails 7.2, Rails 8.0, and Ruby 3.4. While specs pass for Rails 7.2 with MySQL and Postgres (but not SQLite), the compatibility has not been extensively tested in production environments.

Known limitations:
- Existing issues related to concurrency, multi-threading, and managing multiple databases remain unresolved. These issues are unrelated to Rails 7.2/8.0 and have existed in prior versions.
- Users are strongly encouraged to thoroughly test their applications before deploying this version to production.

This release prioritizes compatibility over bug fixes for unrelated issues. If your application already works with Apartment and earlier Rails versions, upgrading to Rails 7.2 or 8.0 with this release should not introduce additional risk.

For more stability, consider waiting for the next major release, which will focus on addressing fundamental concurrency issues and fiber safety. Feedback on this version is highly appreciated to improve future releases!

What's Changed

New Contributors

Full Changelog: v3.1.0...v3.2.0

v3.1.0

28 May 16:49
9c0fe72

Choose a tag to compare

What's Changed

New Contributors

  • @znz made their first contribution in #271

Full Changelog: v3.0.4...v3.1.0

v3.0.4

24 May 14:18
8578ccf

Choose a tag to compare

What's Changed

New Contributors

  • @shkm made their first contribution in #266

Full Changelog: v3.0.2...v3.0.4

3.0.2

24 May 03:28
43444d1

Choose a tag to compare

What's Changed

Full Changelog: v3.0.1...v3.0.2

3.0.1

24 May 01:46
906d6d0

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3.0.0...v3.0.1

3.0.0

20 May 18:09

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.7.2...v3.0.0

2.11.0

07 Feb 06:54
fefed66

Choose a tag to compare

Implemented enhancements:

  • Increase errors visibility by showing more information on the underlying error rather than a generic error 'Apartment::TenantNotFound' (#176)
  • Resolved #177 - Added rails 7 support (#178)

Fixed bugs:

  • Fixing tenant_presence_check config in the README (#180)
  • Resolved #161 and #81 - Fixed sequence name (#187)

Closed issues:

  • Resolved #151 - removed reloader and console overwrite of reload method (#174)