diff --git a/actioncable/actioncable.gemspec b/actioncable/actioncable.gemspec index ca4a888c4d1..932f7ae808c 100644 --- a/actioncable/actioncable.gemspec +++ b/actioncable/actioncable.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "WebSocket framework for Rails." s.description = "Structure many real-time application concerns into channels over a single WebSocket connection." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/actionmailbox/actionmailbox.gemspec b/actionmailbox/actionmailbox.gemspec index 6f07f54e47c..f6d09e79a87 100644 --- a/actionmailbox/actionmailbox.gemspec +++ b/actionmailbox/actionmailbox.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Inbound email handling framework." s.description = "Receive and process incoming emails in Rails applications." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/actionmailer/actionmailer.gemspec b/actionmailer/actionmailer.gemspec index 602bb15ca67..6af02c1bbe6 100644 --- a/actionmailer/actionmailer.gemspec +++ b/actionmailer/actionmailer.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Email composition and delivery framework (part of Rails)." s.description = "Email on Rails. Compose, deliver, and test emails using the familiar controller/view pattern. First-class support for multipart email and attachments." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec index c4a311dd2c1..d144f4d4b89 100644 --- a/actionpack/actionpack.gemspec +++ b/actionpack/actionpack.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Web-flow and rendering framework putting the VC in MVC (part of Rails)." s.description = "Web apps on Rails. Simple, battle-tested conventions for building and testing MVC web applications. Works with any Rack-compatible server." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/actiontext/actiontext.gemspec b/actiontext/actiontext.gemspec index 5fbf777b801..058bf24e783 100644 --- a/actiontext/actiontext.gemspec +++ b/actiontext/actiontext.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Rich text framework." s.description = "Edit and display rich text in Rails applications." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/actionview/actionview.gemspec b/actionview/actionview.gemspec index 06d8e3ac5df..e6ebb2c7dd4 100644 --- a/actionview/actionview.gemspec +++ b/actionview/actionview.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Rendering framework putting the V in MVC (part of Rails)." s.description = "Simple, battle-tested conventions and helpers for building web pages." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/activejob/activejob.gemspec b/activejob/activejob.gemspec index cf0be7e0ca7..4a739293d24 100644 --- a/activejob/activejob.gemspec +++ b/activejob/activejob.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Job framework with pluggable queues." s.description = "Declare job classes that can be run by a variety of queuing backends." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/activemodel/activemodel.gemspec b/activemodel/activemodel.gemspec index d300addabeb..4f0696814ad 100644 --- a/activemodel/activemodel.gemspec +++ b/activemodel/activemodel.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "A toolkit for building modeling frameworks (part of Rails)." s.description = "A toolkit for building modeling frameworks like Active Record. Rich support for attributes, callbacks, validations, serialization, internationalization, and testing." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/activerecord/activerecord.gemspec b/activerecord/activerecord.gemspec index 016528bfdc3..c235d33fdc0 100644 --- a/activerecord/activerecord.gemspec +++ b/activerecord/activerecord.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Object-relational mapper framework (part of Rails)." s.description = "Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/activestorage/activestorage.gemspec b/activestorage/activestorage.gemspec index 8adcc5a9314..863a275a547 100644 --- a/activestorage/activestorage.gemspec +++ b/activestorage/activestorage.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Local and cloud file storage framework." s.description = "Attach cloud and local files in Rails applications." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/activesupport/activesupport.gemspec b/activesupport/activesupport.gemspec index ce8603293e7..17fb20f2a4c 100644 --- a/activesupport/activesupport.gemspec +++ b/activesupport/activesupport.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "A toolkit of support libraries and Ruby core extensions extracted from the Rails framework." s.description = "A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Rich support for multibyte strings, internationalization, time zones, and testing." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/guides/source/active_record_postgresql.md b/guides/source/active_record_postgresql.md index eb7088d79ee..ea347f291b0 100644 --- a/guides/source/active_record_postgresql.md +++ b/guides/source/active_record_postgresql.md @@ -170,7 +170,7 @@ irb> Event.where("payload->>'kind' = ?", "user_renamed") * [type definition](https://www.postgresql.org/docs/current/static/rangetypes.html) * [functions and operators](https://www.postgresql.org/docs/current/static/functions-range.html) -This type is mapped to Ruby [`Range`](https://ruby-doc.org/core-2.7.0/Range.html) objects. +This type is mapped to Ruby [`Range`](https://ruby-doc.org/core-3.1.0/Range.html) objects. ```ruby # db/migrate/20130923065404_create_events.rb @@ -449,7 +449,7 @@ irb> user.save! * [type definition](https://www.postgresql.org/docs/current/static/datatype-net-types.html) The types `inet` and `cidr` are mapped to Ruby -[`IPAddr`](https://ruby-doc.org/stdlib-2.7.0/libdoc/ipaddr/rdoc/IPAddr.html) +[`IPAddr`](https://ruby-doc.org/stdlib-3.1.0/libdoc/ipaddr/rdoc/IPAddr.html) objects. The `macaddr` type is mapped to normal text. ```ruby diff --git a/guides/source/command_line.md b/guides/source/command_line.md index 58cd2edda55..e3c936f1c09 100644 --- a/guides/source/command_line.md +++ b/guides/source/command_line.md @@ -509,8 +509,8 @@ $ bin/rails destroy model Oops $ bin/rails about About your application's environment Rails version 7.2.0 -Ruby version 2.7.0 (x86_64-linux) -RubyGems version 2.7.3 +Ruby version 3.1.0 (x86_64-linux) +RubyGems version 3.3.7 Rack version 3.0.8 JavaScript Runtime Node.js (V8) Middleware: ActionDispatch::HostAuthorization, Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActionDispatch::ServerTiming, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, ActionDispatch::ShowExceptions, WebConsole::Middleware, ActionDispatch::DebugExceptions, ActionDispatch::ActionableExceptions, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ContentSecurityPolicy::Middleware, ActionDispatch::PermissionsPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper diff --git a/guides/source/getting_started.md b/guides/source/getting_started.md index 918d3d08972..f0cb34a6efc 100644 --- a/guides/source/getting_started.md +++ b/guides/source/getting_started.md @@ -93,10 +93,10 @@ current version of Ruby installed: ```bash $ ruby --version -ruby 2.7.0 +ruby 3.1.0 ``` -Rails requires Ruby version 2.7.0 or later. It is preferred to use the latest Ruby version. +Rails requires Ruby version 3.1.0 or later. It is preferred to use the latest Ruby version. If the version number returned is less than that number (such as 2.3.7, or 1.8.7), you'll need to install a fresh copy of Ruby. diff --git a/guides/source/upgrading_ruby_on_rails.md b/guides/source/upgrading_ruby_on_rails.md index 0fe8b1e2ab2..7896a86d311 100644 --- a/guides/source/upgrading_ruby_on_rails.md +++ b/guides/source/upgrading_ruby_on_rails.md @@ -20,7 +20,8 @@ The best way to be sure that your application still works after upgrading is to Rails generally stays close to the latest released Ruby version when it's released: -* Rails 7 requires Ruby 2.7.0 or newer. +* Rails 7.2 requires Ruby 3.1.0 or newer. +* Rails 7.0 and 7.1 requires Ruby 2.7.0 or newer. * Rails 6 requires Ruby 2.5.0 or newer. * Rails 5 requires Ruby 2.2.2 or newer. diff --git a/rails.gemspec b/rails.gemspec index 7c3c7854373..de27c273143 100644 --- a/rails.gemspec +++ b/rails.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Full-stack web application framework." s.description = "Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.required_rubygems_version = ">= 1.8.11" s.license = "MIT" diff --git a/railties/lib/rails.rb b/railties/lib/rails.rb index f4fa213bfec..3d17f034895 100644 --- a/railties/lib/rails.rb +++ b/railties/lib/rails.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require "rails/ruby_version_check" - require "pathname" require "active_support" diff --git a/railties/lib/rails/cli.rb b/railties/lib/rails/cli.rb index a56da65b065..7bbfcf74896 100644 --- a/railties/lib/rails/cli.rb +++ b/railties/lib/rails/cli.rb @@ -6,7 +6,6 @@ require "rails/app_loader" # the rest of this script is not run. Rails::AppLoader.exec_app -require "rails/ruby_version_check" Signal.trap("INT") { puts; exit(1) } require "rails/command" diff --git a/railties/lib/rails/ruby_version_check.rb b/railties/lib/rails/ruby_version_check.rb deleted file mode 100644 index 0cf64d15412..00000000000 --- a/railties/lib/rails/ruby_version_check.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -# :stopdoc: - -if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7.0") && RUBY_ENGINE == "ruby" - desc = defined?(RUBY_DESCRIPTION) ? RUBY_DESCRIPTION : "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE})" - abort <<-end_message - - Rails 7 requires Ruby 2.7.0 or newer. - - You're running - #{desc} - - Please upgrade to Ruby 2.7.0 or newer to continue. - - end_message -end diff --git a/railties/railties.gemspec b/railties/railties.gemspec index 1ad7f490621..044a89de1c7 100644 --- a/railties/railties.gemspec +++ b/railties/railties.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.summary = "Tools for creating, working with, and running Rails applications." s.description = "Rails internals: application bootup, plugins, generators, and rake tasks." - s.required_ruby_version = ">= 2.7.0" + s.required_ruby_version = ">= 3.1.0" s.license = "MIT" diff --git a/tools/rail_inspector/rail_inspector.gemspec b/tools/rail_inspector/rail_inspector.gemspec index 1655e34810d..b23a6bfef90 100644 --- a/tools/rail_inspector/rail_inspector.gemspec +++ b/tools/rail_inspector/rail_inspector.gemspec @@ -11,7 +11,7 @@ Gem::Specification.new do |spec| spec.summary = "A collection of linters for rails/rails" spec.homepage = "https://github.com/skipkayhil/rail_inspector" spec.license = "MIT" - spec.required_ruby_version = ">= 2.7.0" + spec.required_ruby_version = ">= 3.1.0" spec.metadata["homepage_uri"] = spec.homepage spec.metadata["source_code_uri"] = spec.homepage