Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Upgrade Ruby using atx#45

Merged
acastro2 merged 25 commits intomainfrom
atx-result-staging-20251209_222347_c36fed30
Dec 10, 2025
Merged

Upgrade Ruby using atx#45
acastro2 merged 25 commits intomainfrom
atx-result-staging-20251209_222347_c36fed30

Conversation

@acastro2
Copy link
Member

@acastro2 acastro2 commented Dec 9, 2025

Overview

This comprehensive modernization upgrade brings Prodder up to date with current Ruby and PostgreSQL standards. The project now supports Ruby 2.7–3.3 and PostgreSQL 15–17, ensuring compatibility with modern Rails applications while maintaining backward compatibility where reasonable.

Key Changes

1. Ruby Version Support

  • Minimum Ruby requirement raised to 2.7+ (from 2.6)
  • Development environment now uses Ruby 3.3.10
  • Added support for Ruby 2.7, 3.0, 3.2, and 3.3 in CI matrix
  • Gemspec updated to reflect new compatibility requirements

2. PostgreSQL Modernization

  • Upgraded Docker image from PostgreSQL 13-alpine to PostgreSQL 17-alpine
  • Updated CI to install PostgreSQL 17 client tools
  • Updated minimum PostgreSQL requirement from 15 to match production standards
  • Fixed PostgreSQL 17 compatibility issues with `pg_dump` non-deterministic output

3. Dependency Updates

  • Bundler: Updated to 4.0.1+
  • Cucumber: Upgraded from 2.x to 10.x (re-enabled in CI after being commented out)
  • Aruba: Upgraded from 0.5.x to 2.x for improved CLI testing
  • RSpec: Updated to 3.13+
  • Removed outdated version constraints that were blocking updates

4. Code Modernization

  • Updated keyword arguments and syntax for Ruby 3.3 compatibility
  • Fixed Git operations for modern Git versions
  • Updated step definitions for Cucumber 10.x API changes
  • Improved CLI and database utility code for current Ruby standards

5. CI/CD Improvements

  • Enabled full Cucumber feature test suite (previously disabled)
  • Added proper PATH configuration for PostgreSQL 17 tools
  • Configured Git user for Cucumber integration tests
  • Extracted test fixtures properly in CI workflow
  • All tests now passing across Ruby 2.7–3.3

6. Documentation

  • Completely rewritten README with modern examples
  • Updated requirements, installation, and usage instructions
  • Added development and testing frameworks documentation
  • Clarified supported versions and compatibility notes

Testing

  • ✅ All RSpec tests passing
  • ✅ All Cucumber features passing
  • ✅ CI validated across Ruby 2.7, 3.0, 3.2, and 3.3
  • ✅ PostgreSQL 17 compatibility verified

Version Bump

Gem version bumped to 1.9.0 to reflect the significant modernization and version support changes.

Breaking Changes

  • Dropped support for Ruby 2.6 (minimum is now 2.7)
  • Dropped support for PostgreSQL 14 and earlier (minimum is now 15)
  • Cucumber tests now run with v10.x API

Backward Compatibility

  • Code maintains Ruby 2.7+ compatibility
  • Existing PostgreSQL 15–16 databases continue to work
  • No changes to public gem API or configuration format"

… use porcelain mode for proper change detection - Add git user config in commit_to_remote test helper - Update file content matcher to use regex for flexible matching - Add cucumber.yml for proper test configuration
…ec to support Ruby 2.7+ (drop Ruby 2.6) - Update CI to test Ruby 2.7, 3.0, 3.2, 3.3 (remove 2.6) - Improve README with better structure and clarity - Add 'Why Prodder?' section - Update requirements: Ruby 2.7+, PostgreSQL 15+ - Remove Rails from requirements (not a dependency) - Better organized workflow explanation - Improved installation and usage sections - Add badges for Ruby and PostgreSQL versions - Update PostgreSQL requirement to 15+ throughout docs
…he blog.git directory is gitignored but needed for Cucumber tests. Added step to extract it from blog.git.tgz archive before running tests.
…as failing because pg_dump version (16) didn't match PostgreSQL server version (17.7). Install postgresql-client-17 from the official PostgreSQL APT repository to fix the mismatch.
…ere failing because git wasn't configured with user.name and user.email, which are required for git commits. Added step to configure git globally in CI environment.
…itter environment variables in Cucumber Before hook so they're available for all test scenarios that create commits. This is the proper way to configure git for Aruba-based tests.
…other PostgreSQL client tools are in PATH during test execution to fix the lint test that checks for missing executables.
…xport to prepend PostgreSQL bin directory to PATH instead of trying to reference env.PATH in GitHub Actions env block, which was replacing the entire PATH and breaking git access.
…_dump generates a random \restrict token on every dump, causing all dump files to appear changed even when nothing actually changed. This broke tests that expected no commits when dumping unchanged schemas. Solution: Add --restrict-key=prodder flag to pg_dump commands to use a fixed key instead of random one, making dump output deterministic. This fixes all Cucumber test failures related to unexpected file changes.
@acastro2 acastro2 force-pushed the atx-result-staging-20251209_222347_c36fed30 branch from 74b36e4 to be018d9 Compare December 10, 2025 04:21
@acastro2 acastro2 merged commit fde20e1 into main Dec 10, 2025
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants