Development of Rails 8.0 starts now

🎉
This commit is contained in:
Rafael Mendonça França 2024-05-13 16:44:50 +00:00
parent a6e2bb04dd
commit 37fd0e7fe4
No known key found for this signature in database
GPG Key ID: FC23B6D0F1EEE948
58 changed files with 522 additions and 236 deletions

2
.github/stale.yml vendored

@ -20,7 +20,7 @@ markComment: >
The resources of the Rails team are limited, and so we are asking for your help.
If you can still reproduce this error on the `7-1-stable` branch or on `main`,
If you can still reproduce this error on the `7-2-stable` branch or on `main`,
please reply with all of the information you have about it in order to keep the issue open.
Thank you for all your contributions.

@ -27,29 +27,29 @@ GIT
PATH
remote: .
specs:
actioncable (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actioncable (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actionmailbox (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
mail (>= 2.8.0)
actionmailer (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
actionview (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actionmailer (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
actionview (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (7.2.0.alpha)
actionview (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actionpack (8.0.0.alpha)
actionview (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@ -58,35 +58,35 @@ PATH
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actiontext (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
actionview (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
activejob (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
globalid (>= 0.3.6)
activemodel (7.2.0.alpha)
activesupport (= 7.2.0.alpha)
activerecord (7.2.0.alpha)
activemodel (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
activemodel (8.0.0.alpha)
activesupport (= 8.0.0.alpha)
activerecord (8.0.0.alpha)
activemodel (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
timeout (>= 0.4.0)
activestorage (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
activestorage (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
marcel (~> 1.0)
activesupport (7.2.0.alpha)
activesupport (8.0.0.alpha)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@ -95,23 +95,23 @@ PATH
i18n (>= 1.6, < 2)
minitest (>= 5.1, < 5.22.0)
tzinfo (~> 2.0, >= 2.0.5)
rails (7.2.0.alpha)
actioncable (= 7.2.0.alpha)
actionmailbox (= 7.2.0.alpha)
actionmailer (= 7.2.0.alpha)
actionpack (= 7.2.0.alpha)
actiontext (= 7.2.0.alpha)
actionview (= 7.2.0.alpha)
activejob (= 7.2.0.alpha)
activemodel (= 7.2.0.alpha)
activerecord (= 7.2.0.alpha)
activestorage (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
rails (8.0.0.alpha)
actioncable (= 8.0.0.alpha)
actionmailbox (= 8.0.0.alpha)
actionmailer (= 8.0.0.alpha)
actionpack (= 8.0.0.alpha)
actiontext (= 8.0.0.alpha)
actionview (= 8.0.0.alpha)
activejob (= 8.0.0.alpha)
activemodel (= 8.0.0.alpha)
activerecord (= 8.0.0.alpha)
activestorage (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
bundler (>= 1.15.0)
railties (= 7.2.0.alpha)
railties (7.2.0.alpha)
actionpack (= 7.2.0.alpha)
activesupport (= 7.2.0.alpha)
railties (= 8.0.0.alpha)
railties (8.0.0.alpha)
actionpack (= 8.0.0.alpha)
activesupport (= 8.0.0.alpha)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)

@ -1 +1 @@
7.2.0.alpha
8.0.0.alpha

@ -18,4 +18,4 @@
*Sebastian Pöll*, *Junichi Sato*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actioncable/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actioncable/CHANGELOG.md) for previous changes.

@ -9,8 +9,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -1,6 +1,6 @@
{
"name": "@rails/actioncable",
"version": "7.2.0-alpha",
"version": "8.0.0-alpha",
"description": "WebSocket framework for Ruby on Rails.",
"module": "app/assets/javascripts/actioncable.esm.js",
"main": "app/assets/javascripts/actioncable.js",

@ -3,4 +3,4 @@
*Chedli Bourguiba*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actionmailbox/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actionmailbox/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2018_02_12_164506) do
ActiveRecord::Schema[8.0].define(version: 2018_02_12_164506) do
create_table "action_mailbox_inbound_emails", force: :cascade do |t|
t.integer "status", default: 0, null: false
t.string "message_id", null: false

@ -6,4 +6,4 @@
*Rafael Mendonça França*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actionmailer/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actionmailer/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -132,4 +132,4 @@
*Roque Pinel*, *Trevor Turk*, *tonytonyjan*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actionpack/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actionpack/CHANGELOG.md) for previous changes.

@ -9,8 +9,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -40,4 +40,4 @@
*Hartley McGuire*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actiontext/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actiontext/CHANGELOG.md) for previous changes.

@ -9,8 +9,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -1,6 +1,6 @@
{
"name": "@rails/actiontext",
"version": "7.2.0-alpha",
"version": "8.0.0-alpha",
"description": "Edit and display rich text in Rails applications",
"module": "app/assets/javascripts/actiontext.esm.js",
"main": "app/assets/javascripts/actiontext.js",

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2019_03_17_200724) do
ActiveRecord::Schema[8.0].define(version: 2019_03_17_200724) do
create_table "action_text_rich_texts", force: :cascade do |t|
t.string "name", null: false
t.text "body"

@ -94,4 +94,4 @@
*Akhil G Krishnan*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actionview/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/actionview/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -62,4 +62,4 @@
*Rafael Mendonça França*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activejob/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/activejob/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -19,4 +19,4 @@
*Jonathan Hefner*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activemodel/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/activemodel/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -815,4 +815,4 @@
*Myles Boone*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activerecord/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/activerecord/CHANGELOG.md) for previous changes.

@ -139,7 +139,7 @@ A short rundown of some of the major features:
* Database agnostic schema management with Migrations.
class AddSystemSettings < ActiveRecord::Migration[7.2]
class AddSystemSettings < ActiveRecord::Migration[8.0]
def up
create_table :system_settings do |t|
t.string :name

@ -1928,7 +1928,7 @@ def belongs_to(name, scope = nil, **options)
# The join table should not have a primary key or a model associated with it. You must manually generate the
# join table with a migration such as this:
#
# class CreateDevelopersProjectsJoinTable < ActiveRecord::Migration[7.2]
# class CreateDevelopersProjectsJoinTable < ActiveRecord::Migration[8.0]
# def change
# create_join_table :developers, :projects
# end

@ -348,7 +348,7 @@ def #{column_type}(*names, **options)
# Inside migration files, the +t+ object in {create_table}[rdoc-ref:SchemaStatements#create_table]
# is actually of this type:
#
# class SomeMigration < ActiveRecord::Migration[7.2]
# class SomeMigration < ActiveRecord::Migration[8.0]
# def up
# create_table :foo do |t|
# puts t.class # => "ActiveRecord::ConnectionAdapters::TableDefinition"

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -21,7 +21,7 @@ def initialize(message = nil)
# For example the following migration is not reversible.
# Rolling back this migration will raise an ActiveRecord::IrreversibleMigration error.
#
# class IrreversibleMigrationExample < ActiveRecord::Migration[7.2]
# class IrreversibleMigrationExample < ActiveRecord::Migration[8.0]
# def change
# create_table :distributors do |t|
# t.string :zipcode
@ -39,7 +39,7 @@ def initialize(message = nil)
#
# 1. Define <tt>#up</tt> and <tt>#down</tt> methods instead of <tt>#change</tt>:
#
# class ReversibleMigrationExample < ActiveRecord::Migration[7.2]
# class ReversibleMigrationExample < ActiveRecord::Migration[8.0]
# def up
# create_table :distributors do |t|
# t.string :zipcode
@ -64,7 +64,7 @@ def initialize(message = nil)
#
# 2. Use the #reversible method in <tt>#change</tt> method:
#
# class ReversibleMigrationExample < ActiveRecord::Migration[7.2]
# class ReversibleMigrationExample < ActiveRecord::Migration[8.0]
# def change
# create_table :distributors do |t|
# t.string :zipcode
@ -250,7 +250,7 @@ def initialize
#
# Example of a simple migration:
#
# class AddSsl < ActiveRecord::Migration[7.2]
# class AddSsl < ActiveRecord::Migration[8.0]
# def up
# add_column :accounts, :ssl_enabled, :boolean, default: true
# end
@ -270,7 +270,7 @@ def initialize
#
# Example of a more complex migration that also needs to initialize data:
#
# class AddSystemSettings < ActiveRecord::Migration[7.2]
# class AddSystemSettings < ActiveRecord::Migration[8.0]
# def up
# create_table :system_settings do |t|
# t.string :name
@ -399,7 +399,7 @@ def initialize
# $ bin/rails generate migration add_fieldname_to_tablename fieldname:string
#
# This will generate the file <tt>timestamp_add_fieldname_to_tablename.rb</tt>, which will look like this:
# class AddFieldnameToTablename < ActiveRecord::Migration[7.2]
# class AddFieldnameToTablename < ActiveRecord::Migration[8.0]
# def change
# add_column :tablenames, :fieldname, :string
# end
@ -425,7 +425,7 @@ def initialize
#
# Not all migrations change the schema. Some just fix the data:
#
# class RemoveEmptyTags < ActiveRecord::Migration[7.2]
# class RemoveEmptyTags < ActiveRecord::Migration[8.0]
# def up
# Tag.all.each { |tag| tag.destroy if tag.pages.empty? }
# end
@ -438,7 +438,7 @@ def initialize
#
# Others remove columns when they migrate up instead of down:
#
# class RemoveUnnecessaryItemAttributes < ActiveRecord::Migration[7.2]
# class RemoveUnnecessaryItemAttributes < ActiveRecord::Migration[8.0]
# def up
# remove_column :items, :incomplete_items_count
# remove_column :items, :completed_items_count
@ -452,7 +452,7 @@ def initialize
#
# And sometimes you need to do something in SQL not abstracted directly by migrations:
#
# class MakeJoinUnique < ActiveRecord::Migration[7.2]
# class MakeJoinUnique < ActiveRecord::Migration[8.0]
# def up
# execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)"
# end
@ -469,7 +469,7 @@ def initialize
# <tt>Base#reset_column_information</tt> in order to ensure that the model has the
# latest column data from after the new column was added. Example:
#
# class AddPeopleSalary < ActiveRecord::Migration[7.2]
# class AddPeopleSalary < ActiveRecord::Migration[8.0]
# def up
# add_column :people, :salary, :integer
# Person.reset_column_information
@ -531,7 +531,7 @@ def initialize
# To define a reversible migration, define the +change+ method in your
# migration like this:
#
# class TenderloveMigration < ActiveRecord::Migration[7.2]
# class TenderloveMigration < ActiveRecord::Migration[8.0]
# def change
# create_table(:horses) do |t|
# t.column :content, :text
@ -561,7 +561,7 @@ def initialize
# can't execute inside a transaction though, and for these situations
# you can turn the automatic transactions off.
#
# class ChangeEnum < ActiveRecord::Migration[7.2]
# class ChangeEnum < ActiveRecord::Migration[8.0]
# disable_ddl_transaction!
#
# def up
@ -822,7 +822,7 @@ def execution_strategy
# and create the table 'apples' on the way up, and the reverse
# on the way down.
#
# class FixTLMigration < ActiveRecord::Migration[7.2]
# class FixTLMigration < ActiveRecord::Migration[8.0]
# def change
# revert do
# create_table(:horses) do |t|
@ -841,7 +841,7 @@ def execution_strategy
#
# require_relative "20121212123456_tenderlove_migration"
#
# class FixupTLMigration < ActiveRecord::Migration[7.2]
# class FixupTLMigration < ActiveRecord::Migration[8.0]
# def change
# revert TenderloveMigration
#
@ -892,7 +892,7 @@ def down
# when the three columns 'first_name', 'last_name' and 'full_name' exist,
# even when migrating down:
#
# class SplitNameMigration < ActiveRecord::Migration[7.2]
# class SplitNameMigration < ActiveRecord::Migration[8.0]
# def change
# add_column :users, :first_name, :string
# add_column :users, :last_name, :string
@ -920,7 +920,7 @@ def reversible
# In the following example, the new column +published+ will be given
# the value +true+ for all existing records.
#
# class AddPublishedToPosts < ActiveRecord::Migration[7.2]
# class AddPublishedToPosts < ActiveRecord::Migration[8.0]
# def change
# add_column :posts, :published, :boolean, default: false
# up_only do

@ -21,7 +21,7 @@ def self.find(version)
# New migration functionality that will never be backward compatible should be added directly to `ActiveRecord::Migration`.
#
# There are classes for each prior Rails version. Each class descends from the *next* Rails version, so:
# 5.2 < 6.0 < 6.1 < 7.0 < 7.1 < 7.2
# 5.2 < 6.0 < 6.1 < 7.0 < 7.1 < 7.2 < 8.0
#
# If you are introducing new migration functionality that should only apply from Rails 7 onward, then you should
# find the class that immediately precedes it (6.1), and override the relevant migration methods to undo your changes.
@ -29,7 +29,10 @@ def self.find(version)
# For example, Rails 6 added a default value for the `precision` option on datetime columns. So in this file, the `V5_2`
# class sets the value of `precision` to `nil` if it's not explicitly provided. This way, the default value will not apply
# for migrations written for 5.2, but will for migrations written for 6.0.
V7_2 = Current
V8_0 = Current
class V7_2 < V8_0
end
class V7_1 < V7_2
end

@ -503,7 +503,7 @@ def content_columns
# when just after creating a table you want to populate it with some default
# values, e.g.:
#
# class CreateJobLevels < ActiveRecord::Migration[7.2]
# class CreateJobLevels < ActiveRecord::Migration[8.0]
# def up
# create_table :job_levels do |t|
# t.integer :id

@ -71,4 +71,4 @@
*Yogesh Khater*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activestorage/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/activestorage/CHANGELOG.md) for previous changes.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -1,6 +1,6 @@
{
"name": "@rails/activestorage",
"version": "7.2.0-alpha",
"version": "8.0.0-alpha",
"description": "Attach cloud and local files in Rails applications",
"module": "app/assets/javascripts/activestorage.esm.js",
"main": "app/assets/javascripts/activestorage.js",

@ -230,4 +230,4 @@
*fatkodima*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activesupport/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/activesupport/CHANGELOG.md) for previous changes.

@ -68,7 +68,7 @@ def self._instance # :nodoc:
# and the second is a library name.
#
# ActiveSupport::Deprecation.new('2.0', 'MyLibrary')
def initialize(deprecation_horizon = "7.3", gem_name = "Rails")
def initialize(deprecation_horizon = "8.1", gem_name = "Rails")
self.gem_name = gem_name
self.deprecation_horizon = deprecation_horizon
# By default, warnings are not silenced and debugging is off.

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -1,2 +1,2 @@
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/guides/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/guides/CHANGELOG.md) for previous changes.

@ -0,0 +1,331 @@
**DO NOT READ THIS FILE ON GITHUB, GUIDES ARE PUBLISHED ON https://guides.rubyonrails.org.**
Ruby on Rails 8.0 Release Notes
===============================
Highlights in Rails 8.0:
--------------------------------------------------------------------------------
Upgrading to Rails 8.0
----------------------
If you're upgrading an existing application, it's a great idea to have good test
coverage before going in. You should also first upgrade to Rails 7.1 in case you
haven't and make sure your application still runs as expected before attempting
an update to Rails 8.0. A list of things to watch out for when upgrading is
available in the
[Upgrading Ruby on Rails](upgrading_ruby_on_rails.html#upgrading-from-rails-7-2-to-rails-8-0)
guide.
Major Features
--------------
Railties
--------
Please refer to the [Changelog][railties] for detailed changes.
### Removals
* Remove deprecated `Rails::Generators::Testing::Behaviour`.
* Remove deprecated `Rails.application.secrets`.
* Remove deprecated `Rails.config.enable_dependency_loading`.
* Remove deprecated `find_cmd_and_exec` console helper.
### Deprecations
### Notable changes
Action Cable
------------
Please refer to the [Changelog][action-cable] for detailed changes.
### Removals
### Deprecations
### Notable changes
Action Pack
-----------
Please refer to the [Changelog][action-pack] for detailed changes.
### Removals
* Remove deprecated constant `ActionDispatch::IllegalStateError`.
* Remove deprecated constant `AbstractController::Helpers::MissingHelperError`.
* Remove deprecated comparison between `ActionController::Parameters` and `Hash`.
* Remove deprecated `Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type`.
* Remove deprecated `speaker`, `vibrate`, and `vr` permissions policy directives.
* Remove deprecated support to set `Rails.application.config.action_dispatch.show_exceptions` to `true` and `false`.
### Deprecations
* Deprecate `Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality`.
### Notable changes
Action View
-----------
Please refer to the [Changelog][action-view] for detailed changes.
### Removals
* Remove deprecated `@rails/ujs` in favor of `Turbo`.
### Deprecations
* Deprecate passing content to void elements when using `tag.br` type tag builders.
### Notable changes
Action Mailer
-------------
Please refer to the [Changelog][action-mailer] for detailed changes.
### Removals
* Remove deprecated `config.action_mailer.preview_path`.
* Remove deprecated params via `:args` for `assert_enqueued_email_with`.
### Deprecations
### Notable changes
Active Record
-------------
Please refer to the [Changelog][active-record] for detailed changes.
### Removals
* Remove deprecated `Rails.application.config.active_record.suppress_multiple_database_warning`.
* Remove deprecated support to call `alias_attribute` with non-existent attribute names.
* Remove deprecated `name` argument from `ActiveRecord::Base.remove_connection`.
* Remove deprecated `ActiveRecord::Base.clear_active_connections!`.
* Remove deprecated `ActiveRecord::Base.clear_reloadable_connections!`.
* Remove deprecated `ActiveRecord::Base.clear_all_connections!`.
* Remove deprecated `ActiveRecord::Base.flush_idle_connections!`.
* Remove deprecated `ActiveRecord::ActiveJobRequiredError`.
* Remove deprecated support to define `explain` in the connection adapter with 2 arguments.
* Remove deprecated `ActiveRecord::LogSubscriber.runtime` method.
* Remove deprecated `ActiveRecord::LogSubscriber.runtime=` method.
* Remove deprecated `ActiveRecord::LogSubscriber.reset_runtime` method.
* Remove deprecated `ActiveRecord::Migration.check_pending` method.
* Remove deprecated support to passing `SchemaMigration` and `InternalMetadata` classes as arguments to
`ActiveRecord::MigrationContext`.
* Remove deprecated behavior to support referring to a singular association by its plural name.
* Remove deprecated `TestFixtures.fixture_path`.
* Remove deprecated support to `ActiveRecord::Base#read_attribute(:id)` to return the custom primary key value.
* Remove deprecated support to passing coder and class as second argument to `serialize`.
* Remove deprecated `#all_foreign_keys_valid?` from database adapters.
* Remove deprecated `ActiveRecord::ConnectionAdapters::SchemaCache.load_from`.
* Remove deprecated `ActiveRecord::ConnectionAdapters::SchemaCache#data_sources`.
* Remove deprecated `#all_connection_pools`.
* Remove deprecated support to apply `#connection_pool_list`, `#active_connections?`, `#clear_active_connections!`,
`#clear_reloadable_connections!`, `#clear_all_connections!` and `#flush_idle_connections!` to the connections pools
for the current role when the `role` argument isn't provided.
* Remove deprecated `ActiveRecord::ConnectionAdapters::ConnectionPool#connection_klass`.
* Remove deprecated `#quote_bound_value`.
* Remove deprecated support to quote `ActiveSupport::Duration`.
* Remove deprecated support to pass `deferrable: true` to `add_foreign_key`.
* Remove deprecated support to pass `rewhere` to `ActiveRecord::Relation#merge`.
* Remove deprecated behavior that would rollback a transaction block when exited using `return`, `break` or `throw`.
### Deprecations
* Deprecate `Rails.application.config.active_record.allow_deprecated_singular_associations_name`
* Deprecate `Rails.application.config.active_record.commit_transaction_on_non_local_return`
### Notable changes
Active Storage
--------------
Please refer to the [Changelog][active-storage] for detailed changes.
### Removals
* Remove deprecated `config.active_storage.replace_on_assign_to_many`.
* Remove deprecated `config.active_storage.silence_invalid_content_types_warning`.
### Deprecations
### Notable changes
Active Model
------------
Please refer to the [Changelog][active-model] for detailed changes.
### Removals
### Deprecations
### Notable changes
Active Support
--------------
Please refer to the [Changelog][active-support] for detailed changes.
### Removals
* Remove deprecated `ActiveSupport::Notifications::Event#children` and `ActiveSupport::Notifications::Event#parent_of?`.
* Remove deprecated support to call the following methods without passing a deprecator:
- `deprecate`
- `deprecate_constant`
- `ActiveSupport::Deprecation::DeprecatedObjectProxy.new`
- `ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.new`
- `ActiveSupport::Deprecation::DeprecatedConstantProxy.new`
- `assert_deprecated`
- `assert_not_deprecated`
- `collect_deprecations`
* Remove deprecated `ActiveSupport::Deprecation` delegation to instance.
* Remove deprecated `SafeBuffer#clone_empty`.
* Remove deprecated `#to_default_s` from `Array`, `Date`, `DateTime` and `Time`.
* Remove deprecated `:pool_size` and `:pool_timeout` options for the cache storage.
* Remove deprecated support for `config.active_support.cache_format_version = 6.1`.
* Remove deprecated constants `ActiveSupport::LogSubscriber::CLEAR` and `ActiveSupport::LogSubscriber::BOLD`.
* Remove deprecated support to bolding log text with positional boolean in `ActiveSupport::LogSubscriber#color`.
* Remove deprecated `config.active_support.disable_to_s_conversion`.
* Remove deprecated `config.active_support.remove_deprecated_time_with_zone_name`.
* Remove deprecated `config.active_support.use_rfc4122_namespaced_uuids`.
* Remove deprecated support to passing `Dalli::Client` instances to `MemCacheStore`.
* Remove deprecated support for the pre-Ruby 2.4 behavior of `to_time` returning a `Time` object with local timezone.
### Deprecations
* Deprecate `config.active_support.to_time_preserves_timezone`.
* Deprecate `DateAndTime::Compatibility.preserve_timezone`.
### Notable changes
Active Job
----------
Please refer to the [Changelog][active-job] for detailed changes.
### Removals
* Remove deprecated primitive serializer for `BigDecimal` arguments.
* Remove deprecated support to set numeric values to `scheduled_at` attribute.
* Remove deprecated `:exponentially_longer` value for the `:wait` in `retry_on`.
### Deprecations
* Deprecate `Rails.application.config.active_job.use_big_decimal_serialize`.
### Notable changes
Action Text
----------
Please refer to the [Changelog][action-text] for detailed changes.
### Removals
### Deprecations
### Notable changes
Action Mailbox
----------
Please refer to the [Changelog][action-mailbox] for detailed changes.
### Removals
### Deprecations
### Notable changes
Ruby on Rails Guides
--------------------
Please refer to the [Changelog][guides] for detailed changes.
### Notable changes
Credits
-------
See the
[full list of contributors to Rails](https://contributors.rubyonrails.org/)
for the many people who spent many hours making Rails, the stable and robust
framework it is. Kudos to all of them.
[railties]: https://github.com/rails/rails/blob/main/railties/CHANGELOG.md
[action-pack]: https://github.com/rails/rails/blob/main/actionpack/CHANGELOG.md
[action-view]: https://github.com/rails/rails/blob/main/actionview/CHANGELOG.md
[action-mailer]: https://github.com/rails/rails/blob/main/actionmailer/CHANGELOG.md
[action-cable]: https://github.com/rails/rails/blob/main/actioncable/CHANGELOG.md
[active-record]: https://github.com/rails/rails/blob/main/activerecord/CHANGELOG.md
[active-storage]: https://github.com/rails/rails/blob/main/activestorage/CHANGELOG.md
[active-model]: https://github.com/rails/rails/blob/main/activemodel/CHANGELOG.md
[active-support]: https://github.com/rails/rails/blob/main/activesupport/CHANGELOG.md
[active-job]: https://github.com/rails/rails/blob/main/activejob/CHANGELOG.md
[action-text]: https://github.com/rails/rails/blob/main/actiontext/CHANGELOG.md
[action-mailbox]: https://github.com/rails/rails/blob/main/actionmailbox/CHANGELOG.md
[guides]: https://github.com/rails/rails/blob/main/guides/CHANGELOG.md

@ -10,7 +10,7 @@
</p>
<% else %>
<p>
These are the new guides for Rails 7.2 based on <a href="https://github.com/rails/rails/tree/<%= @version %>"><%= @version %></a>.
These are the new guides for Rails 8.0 based on <a href="https://github.com/rails/rails/tree/<%= @version %>"><%= @version %></a>.
These guides are designed to make you immediately productive with Rails, and to help you understand how all of the pieces fit together.
</p>
<% end %>

@ -645,7 +645,7 @@ files which are executed against any database that Active Record supports.
Here's a migration that creates a new table called `publications`:
```ruby
class CreatePublications < ActiveRecord::Migration[7.2]
class CreatePublications < ActiveRecord::Migration[8.0]
def change
create_table :publications do |t|
t.string :title

@ -36,7 +36,7 @@ You can create a table with a composite primary key by passing the
`:primary_key` option to `create_table` with an array value:
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products, primary_key: [:store_id, :sku] do |t|
t.integer :store_id

@ -34,7 +34,7 @@ history to the latest version. Active Record will also update your
Here's an example of a migration:
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products do |t|
t.string :name
@ -73,7 +73,7 @@ If you wish for a migration to do something that Active Record doesn't know how
to reverse, you can use `reversible`:
```ruby
class ChangeProductsPrice < ActiveRecord::Migration[7.2]
class ChangeProductsPrice < ActiveRecord::Migration[8.0]
def change
reversible do |direction|
change_table :products do |t|
@ -92,7 +92,7 @@ passed to `direction.up` and `direction.down` respectively.
Alternatively, you can use `up` and `down` instead of `change`:
```ruby
class ChangeProductsPrice < ActiveRecord::Migration[7.2]
class ChangeProductsPrice < ActiveRecord::Migration[8.0]
def up
change_table :products do |t|
t.change :price, :string
@ -136,7 +136,7 @@ $ bin/rails generate migration AddPartNumberToProducts
This will create an appropriately named empty migration:
```ruby
class AddPartNumberToProducts < ActiveRecord::Migration[7.2]
class AddPartNumberToProducts < ActiveRecord::Migration[8.0]
def change
end
end
@ -160,7 +160,7 @@ $ bin/rails generate migration AddPartNumberToProducts part_number:string
This will generate the following migration:
```ruby
class AddPartNumberToProducts < ActiveRecord::Migration[7.2]
class AddPartNumberToProducts < ActiveRecord::Migration[8.0]
def change
add_column :products, :part_number, :string
end
@ -176,7 +176,7 @@ $ bin/rails generate migration AddPartNumberToProducts part_number:string:index
This will generate the appropriate [`add_column`][] and [`add_index`][] statements:
```ruby
class AddPartNumberToProducts < ActiveRecord::Migration[7.2]
class AddPartNumberToProducts < ActiveRecord::Migration[8.0]
def change
add_column :products, :part_number, :string
add_index :products, :part_number
@ -194,7 +194,7 @@ Will generate a schema migration which adds two additional
columns to the `products` table.
```ruby
class AddDetailsToProducts < ActiveRecord::Migration[7.2]
class AddDetailsToProducts < ActiveRecord::Migration[8.0]
def change
add_column :products, :part_number, :string
add_column :products, :price, :decimal
@ -213,7 +213,7 @@ $ bin/rails generate migration RemovePartNumberFromProducts part_number:string
This generates the appropriate [`remove_column`][] statements:
```ruby
class RemovePartNumberFromProducts < ActiveRecord::Migration[7.2]
class RemovePartNumberFromProducts < ActiveRecord::Migration[8.0]
def change
remove_column :products, :part_number, :string
end
@ -233,7 +233,7 @@ $ bin/rails generate migration CreateProducts name:string part_number:string
generates
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products do |t|
t.string :name
@ -261,7 +261,7 @@ $ bin/rails generate migration AddUserRefToProducts user:references
generates the following [`add_reference`][] call:
```ruby
class AddUserRefToProducts < ActiveRecord::Migration[7.2]
class AddUserRefToProducts < ActiveRecord::Migration[8.0]
def change
add_reference :products, :user, foreign_key: true
end
@ -281,7 +281,7 @@ $ bin/rails generate migration CreateJoinTableCustomerProduct customer product
will produce the following migration:
```ruby
class CreateJoinTableCustomerProduct < ActiveRecord::Migration[7.2]
class CreateJoinTableCustomerProduct < ActiveRecord::Migration[8.0]
def change
create_join_table :customers, :products do |t|
# t.index [:customer_id, :product_id]
@ -310,7 +310,7 @@ $ bin/rails generate model Product name:string description:text
This will create a migration that looks like this:
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products do |t|
t.string :name
@ -338,7 +338,7 @@ $ bin/rails generate migration AddDetailsToProducts 'price:decimal{5,2}' supplie
will produce a migration that looks like this
```ruby
class AddDetailsToProducts < ActiveRecord::Migration[7.2]
class AddDetailsToProducts < ActiveRecord::Migration[8.0]
def change
add_column :products, :price, :decimal, precision: 5, scale: 2
add_reference :products, :supplier, polymorphic: true
@ -635,7 +635,7 @@ You can create a table with a composite primary key by passing the
`:primary_key` option to `create_table` with an array value:
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products, primary_key: [:customer_id, :product_sku] do |t|
t.integer :customer_id
@ -736,7 +736,7 @@ reverse. You can use [`reversible`][] to specify what to do when running a
migration and what else to do when reverting it. For example:
```ruby
class ExampleMigration < ActiveRecord::Migration[7.2]
class ExampleMigration < ActiveRecord::Migration[8.0]
def change
create_table :distributors do |t|
t.string :zipcode
@ -786,7 +786,7 @@ reverse order they were made in the `up` method. The example in the `reversible`
section is equivalent to:
```ruby
class ExampleMigration < ActiveRecord::Migration[7.2]
class ExampleMigration < ActiveRecord::Migration[8.0]
def up
create_table :distributors do |t|
t.string :zipcode
@ -832,7 +832,7 @@ You can use Active Record's ability to rollback migrations using the [`revert`][
```ruby
require_relative "20121212123456_example_migration"
class FixupExampleMigration < ActiveRecord::Migration[7.2]
class FixupExampleMigration < ActiveRecord::Migration[8.0]
def change
revert ExampleMigration
@ -850,7 +850,7 @@ For example, let's imagine that `ExampleMigration` is committed and it is later
decided that a Distributors view is no longer needed.
```ruby
class DontUseDistributorsViewMigration < ActiveRecord::Migration[7.2]
class DontUseDistributorsViewMigration < ActiveRecord::Migration[8.0]
def change
revert do
# copy-pasted code from ExampleMigration
@ -1048,7 +1048,7 @@ Several methods are provided in migrations that allow you to control all this:
For example, take the following migration:
```ruby
class CreateProducts < ActiveRecord::Migration[7.2]
class CreateProducts < ActiveRecord::Migration[8.0]
def change
suppress_messages do
create_table :products do |t|
@ -1153,7 +1153,7 @@ When `:ruby` is selected, then the schema is stored in `db/schema.rb`. If you lo
at this file you'll find that it looks an awful lot like one very big migration:
```ruby
ActiveRecord::Schema[7.2].define(version: 2008_09_06_171750) do
ActiveRecord::Schema[8.0].define(version: 2008_09_06_171750) do
create_table "authors", force: true do |t|
t.string "name"
t.datetime "created_at"
@ -1238,7 +1238,7 @@ modify data. This is useful in an existing database that can't be destroyed and
recreated, such as a production database.
```ruby
class AddInitialProducts < ActiveRecord::Migration[7.2]
class AddInitialProducts < ActiveRecord::Migration[8.0]
def up
5.times do |i|
Product.create(name: "Product ##{i}", description: "A product.")

@ -183,7 +183,7 @@ With no further work, `bin/rails server` will run our new shiny Rails app:
$ cd my_app
$ bin/rails server
=> Booting Puma
=> Rails 7.2.0 application starting in development
=> Rails 8.0.0 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.4.0 (ruby 3.1.3-p185) ("The Eagle of Durango")
@ -415,7 +415,7 @@ If you wish to test out some code without changing any data, you can do that by
```bash
$ bin/rails console --sandbox
Loading development environment in sandbox (Rails 7.2.0)
Loading development environment in sandbox (Rails 8.0.0)
Any modifications you make will be rolled back on exit
irb(main):001:0>
```
@ -512,7 +512,7 @@ $ bin/rails destroy model Oops
```bash
$ bin/rails about
About your application's environment
Rails version 7.2.0
Rails version 8.0.0
Ruby version 3.1.0 (x86_64-linux)
RubyGems version 3.3.7
Rack version 3.0.8

@ -599,7 +599,7 @@ To ease the upgrade it's required to add the new default to the
value:
```ruby
# new_framework_defaults_7_2.rb.tt
# new_framework_defaults_8_0.rb.tt
# Rails.application.config.active_job.existing_behavior = false
```

@ -378,7 +378,7 @@ Processing by PostsController#index as HTML
10| # GET /posts/1 or /posts/1.json
11| def show
=>#0 PostsController#index at ~/projects/rails-guide-example/app/controllers/posts_controller.rb:7
#1 ActionController::BasicImplicitRender#send_action(method="index", args=[]) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-7.2.0.alpha/lib/action_controller/metal/basic_implicit_render.rb:6
#1 ActionController::BasicImplicitRender#send_action(method="index", args=[]) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-8.0.0.alpha/lib/action_controller/metal/basic_implicit_render.rb:6
# and 72 frames (use `bt' command for all frames)
(rdbg)
```
@ -445,13 +445,13 @@ When used without any options, `backtrace` lists all the frames on the stack:
```rb
=>#0 PostsController#index at ~/projects/rails-guide-example/app/controllers/posts_controller.rb:7
#1 ActionController::BasicImplicitRender#send_action(method="index", args=[]) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-2.0.alpha/lib/action_controller/metal/basic_implicit_render.rb:6
#2 AbstractController::Base#process_action(method_name="index", args=[]) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-7.2.0.alpha/lib/abstract_controller/base.rb:214
#3 ActionController::Rendering#process_action(#arg_rest=nil) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-7.2.0.alpha/lib/action_controller/metal/rendering.rb:53
#4 block in process_action at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-7.2.0.alpha/lib/abstract_controller/callbacks.rb:221
#5 block in run_callbacks at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/activesupport-7.2.0.alpha/lib/active_support/callbacks.rb:118
#6 ActionText::Rendering::ClassMethods#with_renderer(renderer=#<PostsController:0x0000000000af78>) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actiontext-7.2.0.alpha/lib/action_text/rendering.rb:20
#7 block {|controller=#<PostsController:0x0000000000af78>, action=#<Proc:0x00007fd91985f1c0 /Users/st0012/...|} in <class:Engine> (4 levels) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actiontext-7.2.0.alpha/lib/action_text/engine.rb:69
#8 [C] BasicObject#instance_exec at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/activesupport-7.2.0.alpha/lib/active_support/callbacks.rb:127
#2 AbstractController::Base#process_action(method_name="index", args=[]) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-8.0.0.alpha/lib/abstract_controller/base.rb:214
#3 ActionController::Rendering#process_action(#arg_rest=nil) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-8.0.0.alpha/lib/action_controller/metal/rendering.rb:53
#4 block in process_action at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actionpack-8.0.0.alpha/lib/abstract_controller/callbacks.rb:221
#5 block in run_callbacks at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/activesupport-8.0.0.alpha/lib/active_support/callbacks.rb:118
#6 ActionText::Rendering::ClassMethods#with_renderer(renderer=#<PostsController:0x0000000000af78>) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actiontext-8.0.0.alpha/lib/action_text/rendering.rb:20
#7 block {|controller=#<PostsController:0x0000000000af78>, action=#<Proc:0x00007fd91985f1c0 /Users/st0012/...|} in <class:Engine> (4 levels) at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/actiontext-8.0.0.alpha/lib/action_text/engine.rb:69
#8 [C] BasicObject#instance_exec at ~/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/activesupport-8.0.0.alpha/lib/active_support/callbacks.rb:127
..... and more
```

@ -326,6 +326,11 @@
description: >
This guide provides steps to be followed when you upgrade your
applications to a newer version of Ruby on Rails.
-
name: Version 8.0 - ?
url: 8_0_release_notes.html
description: Release notes for Rails 8.0.
work_in_progress: true
-
name: Version 7.2 - ?
url: 7_2_release_notes.html

@ -135,10 +135,10 @@ run the following in a new terminal:
```bash
$ rails --version
Rails 7.2.0
Rails 8.0.0
```
If it says something like "Rails 7.2.0", you are ready to continue.
If it says something like "Rails 8.0.0", you are ready to continue.
### Creating the Blog Application
@ -474,7 +474,7 @@ $ bin/rails console
You should see an `irb` prompt like:
```irb
Loading development environment (Rails 7.2.0)
Loading development environment (Rails 8.0.0)
irb(main):001:0>
```

@ -114,7 +114,7 @@ You can open the terminal within VScode to verify that Rails is installed:
```bash
$ rails --version
Rails 7.2.0
Rails 8.0.0
```
You can now continue with the [Getting Started guide](getting_started.md#hello-rails) and

@ -53,7 +53,7 @@ For unsupported series, bug fixes may coincidentally land in a stable branch,
but won't be released in an official version. It is recommended to point your
application at the stable branch using Git for unsupported versions.
**Currently included series:** `7.2.Z`.
**Currently included series:** `8.0.Z`.
Security Issues
---------------
@ -78,7 +78,7 @@ there could be breaking changes in the security release. A security release
should only contain the changes needed to ensure the app is secure so that it's
easier for applications to remain upgraded.
**Currently included series:** `7.2.Z`, `7.1.Z`.
**Currently included series:** `8.0.Z`, `7.2.Z`.
Severe Security Issues
----------------------
@ -87,7 +87,7 @@ For severe security issues all releases in the current major series, and also th
last release in the previous major series will receive patches and new versions. The
classification of the security issue is judged by the core team.
**Currently included series:** `7.2.Z`, `7.1.Z`, `7.0.Z`, `6.1.Z`.
**Currently included series:** `8.0.Z`, `7.2.Z`.
Unsupported Release Series
--------------------------

@ -64,7 +64,7 @@ $ bin/rails app:update
conflict config/application.rb
Overwrite /myapp/config/application.rb? (enter "h" for help) [Ynaqdh]
force config/application.rb
create config/initializers/new_framework_defaults_7_2.rb
create config/initializers/new_framework_defaults_8_0.rb
...
```
@ -76,6 +76,11 @@ The new Rails version might have different configuration defaults than the previ
To allow you to upgrade to new defaults one by one, the update task has created a file `config/initializers/new_framework_defaults_X.Y.rb` (with the desired Rails version in the filename). You should enable the new configuration defaults by uncommenting them in the file; this can be done gradually over several deployments. Once your application is ready to run with new defaults, you can remove this file and flip the `config.load_defaults` value.
Upgrading from Rails 7.2 to Rails 8.0
-------------------------------------
For more information on changes made to Rails 8.0 please see the [release notes](8_0_release_notes.html).
Upgrading from Rails 7.1 to Rails 7.2
-------------------------------------

@ -334,4 +334,4 @@
*Adrian Hirt*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/railties/CHANGELOG.md) for previous changes.
Please check [7-2-stable](https://github.com/rails/rails/blob/7-2-stable/railties/CHANGELOG.md) for previous changes.

@ -330,6 +330,8 @@ def load_defaults(target_version)
active_record.validate_migration_timestamps = true
active_record.automatically_invert_plural_associations = true
end
when "8.0"
load_defaults "7.2"
else
raise "Unknown version #{target_version.to_s.inspect}"
end

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"

@ -1,68 +0,0 @@
# Be sure to restart your server when you modify this file.
#
# This file eases your Rails 7.2 framework defaults upgrade.
#
# Uncomment each configuration one by one to switch to the new default.
# Once your application is ready to run with all new defaults, you can remove
# this file and set the `config.load_defaults` to `7.2`.
#
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
###
# Controls whether Active Job's `#perform_later` and similar methods automatically defer
# the job queuing to after the current Active Record transaction is committed.
#
# Example:
# Topic.transaction do
# topic = Topic.create(...)
# NewTopicNotificationJob.perform_later(topic)
# end
#
# In this example, if the configuration is set to `:never`, the job will
# be enqueued immediately, even though the `Topic` hasn't been committed yet.
# Because of this, if the job is picked up almost immediately, or if the
# transaction doesn't succeed for some reason, the job will fail to find this
# topic in the database.
#
# If `enqueue_after_transaction_commit` is set to `:default`, the queue adapter
# will define the behaviour.
#
# Note: Active Job backends can disable this feature. This is generally done by
# backends that use the same database as Active Record as a queue, hence they
# don't need this feature.
#++
# Rails.application.config.active_job.enqueue_after_transaction_commit = :default
###
# Adds image/webp to the list of content types Active Storage considers as an image
# Prevents automatic conversion to a fallback PNG, and assumes clients support WebP, as they support gif, jpeg, and png.
# This is possible due to broad browser support for WebP, but older browsers and email clients may still not support
# WebP. Requires imagemagick/libvips built with WebP support.
#++
# Rails.application.config.active_storage.web_image_content_types = %w[image/png image/jpeg image/gif image/webp]
###
# Enable validation of migration timestamps. When set, an ActiveRecord::InvalidMigrationTimestampError
# will be raised if the timestamp prefix for a migration is more than a day ahead of the timestamp
# associated with the current time. This is done to prevent forward-dating of migration files, which can
# impact migration generation and other migration commands.
#
# Applications with existing timestamped migrations that do not adhere to the
# expected format can disable validation by setting this config to `false`.
#++
# Rails.application.config.active_record.validate_migration_timestamps = true
###
# Controls whether Active Record will automatically look for inverse relations
# with a pluralized name.
#
# Example:
# class Comment < ActiveRecord::Base
# belongs_to :post
# end
#
# In this example, Active Record will try to infer a `:comment` (singular) association
# on `Post`. With this option enabled, it will also look for a `:comments` association.
#++
# Rails.application.config.active_record.automatically_invert_plural_associations = true

@ -0,0 +1,10 @@
# Be sure to restart your server when you modify this file.
#
# This file eases your Rails 8.0 framework defaults upgrade.
#
# Uncomment each configuration one by one to switch to the new default.
# Once your application is ready to run with all new defaults, you can remove
# this file and set the `config.load_defaults` to `8.0`.
#
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html

@ -3,8 +3,6 @@
require "erb"
require "cgi"
puts "required tools/preview_docs"
# How to test:
#
# export BUILDKITE_COMMIT="c8b601a225"

@ -7,8 +7,8 @@ def self.gem_version
end
module VERSION
MAJOR = 7
MINOR = 2
MAJOR = 8
MINOR = 0
TINY = 0
PRE = "alpha"