diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index bb44a58b..0de2b192 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,3 +1,3 @@ # Make sure RUBY_VERSION matches the Ruby version in .tool-versions -ARG RUBY_VERSION=3.4.10 +ARG RUBY_VERSION=4.0.6 FROM ghcr.io/rails/devcontainer/images/ruby:$RUBY_VERSION diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 9a8eac38..e0c5fdfa 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -21,7 +21,7 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.4' + ruby-version: '4.0' bundler-cache: true working-directory: docs diff --git a/.platform/hooks/prebuild/01_install_bundler.sh b/.platform/hooks/prebuild/01_install_bundler.sh index 51b52530..ab8704b9 100644 --- a/.platform/hooks/prebuild/01_install_bundler.sh +++ b/.platform/hooks/prebuild/01_install_bundler.sh @@ -1,4 +1,5 @@ #!/bin/bash dnf remove libpq-devel -y dnf install postgresql17-devel -y -gem install bundler -v 2.5.6 +# Keep in sync with BUNDLED WITH in Gemfile.lock +gem install bundler -v 4.0.16 diff --git a/.rubocop.yml b/.rubocop.yml index 36b42c1a..8cd40328 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,6 +1,6 @@ AllCops: NewCops: enable - TargetRubyVersion: 3.3 + TargetRubyVersion: 4.0 Exclude: - 'db/**/*' - 'config/**/*' diff --git a/.tool-versions b/.tool-versions index b8a27c4f..05913eae 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -ruby 3.4.10 +ruby 4.0.6 diff --git a/Dockerfile b/Dockerfile index e5b3ccb3..6f0a3064 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax = docker/dockerfile:1 # Make sure RUBY_VERSION matches the Ruby version in .tool-versions and Gemfile -ARG RUBY_VERSION=3.4.10 +ARG RUBY_VERSION=4.0.6 FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base # Rails app lives here diff --git a/Gemfile b/Gemfile index 303e6b6b..57034938 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '~> 3.4' +ruby '~> 4.0' # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" gem 'rails', '~> 8.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index fd5f73e9..15946b5f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -578,8 +578,6 @@ GEM railties (>= 7.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2026.1) - tzinfo (>= 1.0.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) unicode-emoji (4.2.0) @@ -675,7 +673,7 @@ DEPENDENCIES webmock RUBY VERSION - ruby 3.4.10 + ruby 4.0.6p0 BUNDLED WITH - 2.5.6 + 4.0.16 diff --git a/buildspec.yml b/buildspec.yml index 5fc9f4b2..e1e4b636 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -9,7 +9,7 @@ phases: install: # Use a Ruby version that matches the EB platform runtime-versions: - ruby: 3.4 + ruby: 4.0 commands: - echo "Installing system dependencies for build..." diff --git a/config/boot.rb b/config/boot.rb index 988a5ddc..f46f8e17 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,4 +1,9 @@ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) +# Surface Ruby-level deprecation warnings (off by default since Ruby 3.0) in +# every environment so deprecated language/stdlib usage is visible everywhere: +# development, CI, and production logs alike. +Warning[:deprecated] = true + require "bundler/setup" # Set up gems listed in the Gemfile. require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/environments/development.rb b/config/environments/development.rb index 1db08070..2733327e 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -47,12 +47,9 @@ config.action_mailer.default_url_options = { host: "localhost", port: 3000 } # Print deprecation notices to the Rails logger. + # (Ruby-level deprecation warnings are enabled globally in config/boot.rb.) config.active_support.deprecation = :log - # Surface Ruby-level deprecation warnings (off by default since Ruby 3.0) so - # deprecated language/stdlib usage is visible during local development. - Warning[:deprecated] = true - # Raise exceptions for disallowed deprecations. config.active_support.disallowed_deprecation = :raise diff --git a/config/environments/production.rb b/config/environments/production.rb index 6838a8f6..9807719f 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -87,8 +87,9 @@ # the I18n.default_locale when a translation cannot be found). config.i18n.fallbacks = true - # Don't log any deprecations. - config.active_support.report_deprecations = false + # Log deprecations so upcoming Rails/Ruby removals surface in production logs. + config.active_support.report_deprecations = true + config.active_support.deprecation = :log # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false diff --git a/config/environments/test.rb b/config/environments/test.rb index a240fe44..bf132972 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -49,12 +49,9 @@ # config.action_mailer.delivery_method = :test # Print deprecation notices to the stderr. + # (Ruby-level deprecation warnings are enabled globally in config/boot.rb.) config.active_support.deprecation = :stderr - # Surface Ruby-level deprecation warnings (off by default since Ruby 3.0) so - # deprecated language/stdlib usage is caught in CI and local test runs. - Warning[:deprecated] = true - # Raise exceptions for disallowed deprecations. config.active_support.disallowed_deprecation = :raise diff --git a/docs/developers.md b/docs/developers.md index 0efb0ed3..d7350d60 100644 --- a/docs/developers.md +++ b/docs/developers.md @@ -21,10 +21,10 @@ cd flextensions Install `mise`, such as `brew install mise` or any other ruby language manager. -Make sure you are using Ruby 3.4: +Make sure you are using Ruby 4.0: ``` -mise use ruby@3.4 +mise use ruby@4.0 ``` ### Install dependencies: