1. Upgrading to Rails 8.1
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 8.0 in case you haven't and make sure your application still runs as expected before attempting an update to Rails 8.1. A list of things to watch out for when upgrading is available in the Upgrading Ruby on Rails guide.
2. Major Features
3. Railties
Please refer to the Changelog for detailed changes.
3.1. 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.
3.2. Deprecations
3.3. Notable changes
4. Action Cable
Please refer to the Changelog for detailed changes.
4.1. Removals
4.2. Deprecations
4.3. Notable changes
5. Action Pack
Please refer to the Changelog for detailed changes.
5.1. Removals
Remove deprecated constant
ActionDispatch::IllegalStateError
.Remove deprecated constant
AbstractController::Helpers::MissingHelperError
.Remove deprecated comparison between
ActionController::Parameters
andHash
.Remove deprecated
Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type
.Remove deprecated
speaker
,vibrate
, andvr
permissions policy directives.Remove deprecated support to set
Rails.application.config.action_dispatch.show_exceptions
totrue
andfalse
.
5.2. Deprecations
- Deprecate
Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality
.
5.3. Notable changes
6. Action View
Please refer to the Changelog for detailed changes.
6.1. Removals
- Remove deprecated
@rails/ujs
in favor ofTurbo
.
6.2. Deprecations
- Deprecate passing content to void elements when using
tag.br
type tag builders.
6.3. Notable changes
7. Action Mailer
Please refer to the Changelog for detailed changes.
7.1. Removals
Remove deprecated
config.action_mailer.preview_path
.Remove deprecated params via
:args
forassert_enqueued_email_with
.
7.2. Deprecations
7.3. Notable changes
8. Active Record
Please refer to the Changelog for detailed changes.
8.1. 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 fromActiveRecord::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
andInternalMetadata
classes as arguments toActiveRecord::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 therole
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
toadd_foreign_key
.Remove deprecated support to pass
rewhere
toActiveRecord::Relation#merge
.Remove deprecated behavior that would rollback a transaction block when exited using
return
,break
orthrow
.
8.2. Deprecations
Deprecate
Rails.application.config.active_record.allow_deprecated_singular_associations_name
Deprecate
Rails.application.config.active_record.commit_transaction_on_non_local_return
8.3. Notable changes
9. Active Storage
Please refer to the Changelog for detailed changes.
9.1. Removals
Remove deprecated
config.active_storage.replace_on_assign_to_many
.Remove deprecated
config.active_storage.silence_invalid_content_types_warning
.
9.2. Deprecations
9.3. Notable changes
10. Active Model
Please refer to the Changelog for detailed changes.
10.1. Removals
10.2. Deprecations
10.3. Notable changes
11. Active Support
Please refer to the Changelog for detailed changes.
11.1. Removals
Remove deprecated
ActiveSupport::Notifications::Event#children
andActiveSupport::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
fromArray
,Date
,DateTime
andTime
.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
andActiveSupport::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 toMemCacheStore
.Remove deprecated support for the pre-Ruby 2.4 behavior of
to_time
returning aTime
object with local timezone.
11.2. Deprecations
Deprecate
config.active_support.to_time_preserves_timezone
.Deprecate
DateAndTime::Compatibility.preserve_timezone
.
11.3. Notable changes
12. Active Job
Please refer to the Changelog for detailed changes.
12.1. 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
inretry_on
.
12.2. Deprecations
- Deprecate
Rails.application.config.active_job.use_big_decimal_serialize
.
12.3. Notable changes
13. Action Text
Please refer to the Changelog for detailed changes.
13.1. Removals
13.2. Deprecations
13.3. Notable changes
14. Action Mailbox
Please refer to the Changelog for detailed changes.
14.1. Removals
14.2. Deprecations
14.3. Notable changes
15. Ruby on Rails Guides
Please refer to the Changelog for detailed changes.
15.1. Notable changes
16. Credits
See the full list of contributors to Rails for the many people who spent many hours making Rails, the stable and robust framework it is. Kudos to all of them.