diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 033769a..72851ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,11 @@ jobs: strategy: matrix: ruby: - - 3.1 - - 3.2 - - 3.3 + - "3.1" + - "3.2" + - "3.3" + - "3.4" + - "4.0" fail-fast: false steps: - uses: actions/checkout@v4 @@ -32,11 +34,11 @@ jobs: - run: bundle exec standardrb - name: Run tests env: - COVERAGE: ${{ matrix.ruby == '3.3' && '1' || '0' }} - TEST_NODE_PARITY: ${{ matrix.ruby == '3.3' && '1' || '0' }} + COVERAGE: ${{ matrix.ruby == '4.0' && '1' || '0' }} + TEST_NODE_PARITY: ${{ matrix.ruby == '4.0' && '1' || '0' }} run: bundle exec rake test - name: Upload coverage to Codecov - if: matrix.ruby == '3.3' + if: matrix.ruby == '4.0' uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f with: token: ${{ secrets.CODECOV_TOKEN }} @@ -57,7 +59,7 @@ jobs: lfs: true - uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f with: - ruby-version: 3.3 + ruby-version: "4.0" bundler-cache: true - name: Ensure e2e credentials are configured if: ${{ env.TRANSLOADIT_KEY == '' || env.TRANSLOADIT_SECRET == '' }} diff --git a/.gitignore b/.gitignore index 8a2cdcc..166ed01 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,4 @@ env.sh .env vendor/bundle/ .docker-cache/ -.cache/rubocop_cache/04e06e0faf5ad652d8bcbcfd85bac5f6c32e711e/3031a80880d8a984708138f0d003f77c4bad2648 +.cache/ diff --git a/.standard.yml b/.standard.yml index e69de29..cbce7d3 100644 --- a/.standard.yml +++ b/.standard.yml @@ -0,0 +1,2 @@ +ignore: + - ".docker-cache/**/*" diff --git a/CHANGELOG.md b/CHANGELOG.md index 684df40..340926a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,10 @@ -### 4.0.0 / 2026-09-02 +### 4.0.0 / 2026-09-03 - BREAKING: Replace the long-dormant `rest-client` transport with Faraday 2 and `faraday-multipart`. +- BREAKING: Raise the minimum supported Ruby version from 3.0 to 3.1. - Keep HTTP client types out of SDK responses and exceptions while preserving response status, headers, body access, multipart ordering, and rate-limit retries. - Add a [v3 to v4 migration guide](MIGRATING_TO_V4.md). +- Test all Ruby versions from the supported minimum through Ruby 4.0. ### 3.1.2 / 2025-10-29 diff --git a/Dockerfile b/Dockerfile index 8f85b91..26f9631 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ruby:3.3 AS base +FROM ruby:4.0 AS base RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/MIGRATING_TO_V4.md b/MIGRATING_TO_V4.md index 17f73ea..c8698ab 100644 --- a/MIGRATING_TO_V4.md +++ b/MIGRATING_TO_V4.md @@ -5,7 +5,8 @@ Transloadit API exposed by this gem and do not need code changes. The migration because v3 also delegated undocumented methods to RestClient response objects and exposed RestClient exception inheritance. -The minimum supported Ruby version remains 3.1. +Version 4 requires Ruby 3.1 or newer. The final v3 release allowed Ruby 3.0, so applications still +running Ruby 3.0 must upgrade Ruby before updating this gem. ## Update the dependency diff --git a/lib/transloadit.rb b/lib/transloadit.rb index 9f5c9d3..a9f6f1f 100644 --- a/lib/transloadit.rb +++ b/lib/transloadit.rb @@ -2,7 +2,7 @@ require "date" require "json" require "openssl" -require "cgi" +require "cgi/escape" require "uri" # diff --git a/transloadit.gemspec b/transloadit.gemspec index 12c3d06..afcbef7 100644 --- a/transloadit.gemspec +++ b/transloadit.gemspec @@ -29,9 +29,9 @@ Gem::Specification.new do |gem| gem.add_development_dependency "rake" gem.add_development_dependency "minitest" gem.add_development_dependency "simplecov" - gem.add_development_dependency "standard" + gem.add_development_dependency "standard", ">= 1.54" - gem.add_development_dependency "vcr" + gem.add_development_dependency "vcr", ">= 6.4" gem.add_development_dependency "webmock" gem.add_development_dependency "yard"