Skip to content

Upgrading railties 6 to 7

Breaking6.1.7.10 → 7.2.4Breaking135Security37Platform1Deprecated45New297Changed227Fixed452Other126

BreakingUpgrade verdict

107 breaking changes and a platform requirement change and 37 security fixes.

  • Some image types can no longer be resized or measured by Active Storage, and requesting unfuzzed output formats such as FITS or JXL raises an error.
  • Several deprecation helpers now require an explicit deprecator argument.
  • Two previously deprecated event methods are gone, so code calling them will break.
  • Calling deprecation methods through the class no longer delegates to an instance.
Top 5 of 188 that need code or config changes

railties publishes an official migration guide for version 7. It covers more than the release notes do.

Upgrading from Rails 6.1 to Rails 7.0 ↗

Ruby requirement changed in 7.2.0.beta1: >= 2.5.0 → >= 3.1.0.

Breaking107
Variant transformation of BMP, ICO, and PSD attachments now raises Vips::Error, and analysis of SVG, JPEG XL, JPEG 2000, and Netpbm no longer records width and height.
Vips::Error
Removes deprecated support to call deprecation methods without passing a deprecator.
deprecatedeprecate_constantActiveSupport::Deprecation::DeprecatedObjectProxy.newActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.newActiveSupport::Deprecation::DeprecatedConstantProxy.newassert_deprecatedassert_not_deprecatedcollect_deprecations
Removes deprecated ActiveSupport::Notifications::Event#children and #parent_of?.
ActiveSupport::Notifications::Event#childrenActiveSupport::Notifications::Event#parent_of?
Removes deprecated ActiveSupport::Deprecation delegation to instance.
ActiveSupport::Deprecation
Removes deprecated SafeBuffer#clone_empty.
SafeBuffer#clone_empty
Removes deprecated #to_default_s from Array, Date, DateTime and Time.
Array#to_default_sDate#to_default_sDateTime#to_default_sTime#to_default_s
Removes deprecated support to passing Dalli::Client instances to MemCacheStore.
Dalli::ClientMemCacheStore
Removes deprecated config.active_support.use_rfc4122_namespaced_uuids.
config.active_support.use_rfc4122_namespaced_uuids
Removes deprecated config.active_support.remove_deprecated_time_with_zone_name.
config.active_support.remove_deprecated_time_with_zone_name
Removes deprecated config.active_support.disable_to_s_conversion.
config.active_support.disable_to_s_conversion
Removes deprecated support to bold log text with positional boolean in ActiveSupport::LogSubscriber#color.
ActiveSupport::LogSubscriber#color
Removes deprecated constants ActiveSupport::LogSubscriber::CLEAR and ActiveSupport::LogSubscriber::BOLD.
ActiveSupport::LogSubscriber::CLEARActiveSupport::LogSubscriber::BOLD
Removes deprecated support for config.active_support.cache_format_version = 6.1.
config.active_support.cache_format_version
Removes deprecated :pool_size and :pool_timeout options for the cache storage.
:pool_size:pool_timeout
Removes deprecated behavior that rolled back a transaction block when exited using return, break or throw.
Removes deprecated support to pass rewhere to ActiveRecord::Relation#merge.
ActiveRecord::Relation#mergerewhere
Removes deprecated support to pass deferrable: true to add_foreign_key.
add_foreign_keydeferrable
Removes deprecated support to quote ActiveSupport::Duration.
ActiveSupport::Duration
Removes deprecated #quote_bound_value.
#quote_bound_value
Removes deprecated ActiveRecord::ConnectionAdapters::ConnectionPool#connection_klass.
ActiveRecord::ConnectionAdapters::ConnectionPool#connection_klass
Removes deprecated support for applying connection pool list and clear methods to the current role when role is omitted.
#connection_pool_list#active_connections?#clear_active_connections!#clear_reloadable_connections!#clear_all_connections!#flush_idle_connections!
Removes deprecated #all_connection_pools.
#all_connection_pools
Removes deprecated ActiveRecord::ConnectionAdapters::SchemaCache#data_sources.
ActiveRecord::ConnectionAdapters::SchemaCache#data_sources
Removes deprecated ActiveRecord::ConnectionAdapters::SchemaCache.load_from.
ActiveRecord::ConnectionAdapters::SchemaCache.load_from
Removes deprecated #all_foreign_keys_valid? from database adapters.
#all_foreign_keys_valid?
Removes deprecated support for passing coder and class as the second argument to serialize.
serialize
Removes deprecated support for ActiveRecord::Base#read_attribute(:id) returning the custom primary key value.
ActiveRecord::Base#read_attribute
Removes deprecated TestFixtures.fixture_path.
TestFixtures.fixture_path
Removes deprecated behavior supporting referring to a singular association by its plural name.
Removes deprecated support for passing SchemaMigration and InternalMetadata classes to ActiveRecord::MigrationContext.
SchemaMigrationInternalMetadataActiveRecord::MigrationContext
Removes deprecated ActiveRecord::Migration.check_pending! method.
ActiveRecord::Migration.check_pending!
Removes deprecated ActiveRecord::LogSubscriber.runtime method.
ActiveRecord::LogSubscriber.runtimeActiveRecord::LogSubscriber.runtime=
Removes deprecated ActiveRecord::LogSubscriber.reset_runtime method.
ActiveRecord::LogSubscriber.reset_runtime
Removes deprecated support for defining explain in the connection adapter with 2 arguments.
explain
Removes deprecated ActiveRecord::ActiveJobRequiredError.
ActiveRecord::ActiveJobRequiredError
Removes deprecated ActiveRecord::Base.clear_active_connections!.
ActiveRecord::Base.clear_active_connections!
Removes deprecated ActiveRecord::Base.clear_reloadable_connections!.
ActiveRecord::Base.clear_reloadable_connections!
Removes deprecated ActiveRecord::Base.clear_all_connections!.
ActiveRecord::Base.clear_all_connections!
Removes deprecated ActiveRecord::Base.flush_idle_connections!.
ActiveRecord::Base.flush_idle_connections!
Removes deprecated name argument from ActiveRecord::Base.remove_connection.
ActiveRecord::Base.remove_connection
Removes deprecated support for calling alias_attribute with non-existent attribute names.
alias_attribute
Removes deprecated Rails.application.config.active_record.suppress_multiple_database_warning.
Rails.application.config.active_record.suppress_multiple_database_warning
Removes deprecated support for setting Rails.application.config.action_dispatch.show_exceptions to true and false.
Rails.application.config.action_dispatch.show_exceptions
Removes deprecated speaker, vibrate, and vr permissions policy directives.
speakervibratevr
Removes deprecated Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type.
Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type
Removes deprecated comparison between ActionController::Parameters and Hash.
ActionController::ParametersHash
Removes deprecated constant AbstractController::Helpers::MissingHelperError.
AbstractController::Helpers::MissingHelperError
Removes deprecated constant ActionDispatch::IllegalStateError.
ActionDispatch::IllegalStateError
Removes deprecated :exponentially_longer value for :wait in retry_on.
retry_on:wait:exponentially_longer
Removes deprecated support for setting numeric values to the scheduled_at attribute.
scheduled_at
Removes deprecated primitive serializer for BigDecimal arguments.
BigDecimal
Removes deprecated params via :args for assert_enqueued_email_with.
assert_enqueued_email_with:args
Removes deprecated config.action_mailer.preview_path.
config.action_mailer.preview_path
Removes deprecated config.active_storage.silence_invalid_content_types_warning.
config.active_storage.silence_invalid_content_types_warning
Removes deprecated config.active_storage.replace_on_assign_to_many.
config.active_storage.replace_on_assign_to_many
Remove oracle, sqlserver and JRuby specific database adapters from rails new and rails db:system:change; supported options are sqlite3, mysql, postgresql and trilogy.
rails newrails db:system:changeoraclesqlserversqlite3mysqlpostgresqltrilogy
Remove deprecated find_cmd_and_exec console helper.
find_cmd_and_exec
Remove deprecated Rails.config.enable_dependency_loading.
Rails.config.enable_dependency_loading
Remove deprecated Rails.application.secrets.
Rails.application.secrets
Removes the config.public_file_server.enabled option from generators for all environments.
config.public_file_server.enabled
Removes deprecated support for pre-Ruby 2.4 behavior of to_time returning a Time with local timezone.
to_time
Renames ActionView::TestCase::Behavior::Content to ActionView::TestCase::Behavior::RenderedViewContent, which now inherits from String.
ActionView::TestCase::Behavior::ContentActionView::TestCase::Behavior::RenderedViewContent
Renames ActionView::TestCase::Behavior::Content to RenderedViewContent, which now inherits from String and is marked nodoc.
ActionView::TestCase::Behavior::ContentActionView::TestCase::Behavior::RenderedViewContent
Rename Range#overlaps? to #overlap? and add alias for backwards compatibility.
Range#overlaps?#overlap?
Object#deep_dup no longer duplicate named classes and modules.
Object#deep_dup
Remove deprecated support to generate incorrect RFC 4122 UUIDs when providing a namespace ID that is not one of the constants defined on Digest::UUID.
Digest::UUID
Remove implicit conversion of objects into String by ActiveSupport::SafeBuffer.
StringActiveSupport::SafeBuffer
Remove deprecated active_support/core_ext/range/include_time_with_zone file.
active_support/core_ext/range/include_time_with_zone
Remove deprecated override of ActiveSupport::TimeWithZone.name.
ActiveSupport::TimeWithZone.name
Remove deprecated option to passing a format to #to_s in Array, Range, Date, DateTime, Time, BigDecimal, Float and, Integer.
#to_sArrayRangeDateDateTimeTime
Remove deprecated ActiveSupport::PerThreadRegistry.
ActiveSupport::PerThreadRegistry
Remove deprecated override of Enumerable#sum.
Enumerable#sum
Remove change in the typography of user facing error messages.
Remove -shm and -wal SQLite files when rails db:drop is run.
Remove deprecated Tasks::DatabaseTasks.schema_file_type.
Tasks::DatabaseTasks.schema_file_type
Remove deprecated config.active_record.partial_writes.
config.active_record.partial_writes
Remove deprecated ActiveRecord::Base config accessors.
ActiveRecord::Base
Remove the :include_replicas argument from configs_for.
:include_replicasconfigs_for:include_hidden
ActiveRecord::Base.serialize no longer uses YAML by default.
ActiveRecord::Base.serializeOj
Remove ActiveRecord.legacy_connection_handling.
ActiveRecord.legacy_connection_handling
Remove deprecated support to passing instance variables as locals to partials.
Remove deprecated constant ActionView::Path.
ActionView::Path
Remove table alias added when using where.missing or where.associated.
where.missingwhere.associated
Remove --no-comments flag in structure dumps for PostgreSQL.
--no-comments
Removed deprecated environment variable MAILGUN_INGRESS_API_KEY.
MAILGUN_INGRESS_API_KEYRails.application.credentials.action_mailbox.mailgun_api_keyActionMailer::DeliveryJobActionMailer::Parameterized::DeliveryJobActionMailer::MailDeliveryJobemail_address_with_nameRails.application.executorActionController::TestCaseRails.config.action_view.raise_on_missing_translationsfixture_file_uploadfixture_pathActionDispatch::SystemTestCase#host!Rails.config.action_dispatch.hosts_response_appActionDispatch::Response.return_only_media_type_on_content_typeActionController::Redirecting::UnsafeRedirectErrorredirect_torescue_fromurl_fromSystemTestCase::driven_byHostAuthorizationconfig.consider_all_requests_localerrordevelopmentconfig.server_timingServer-TimingActionDispatch::Request#media_typenilContent-Typedirect_upload_urlblob_url_templaterich_text_area_tagform:rich_text_area[method]button_toFormBuilder#buttonfield_nameFormBuilder#field_nameActionView::Base.field_error_procActionView::Base<form>[action]:day_formatdate_selectlink_toModel#to_sto_sProfile#to_snametag:return_false_on_aborted_enqueueRails.config.active_job.skip_after_callbacks_if_terminatedafter_enqueueafter_performSerializationErrorSerializer::ModuleSerializerActiveModel::Errors#keysActiveModel::Errors#valuesActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_nameActiveRecord::Connection#in_clause_lengthActiveRecord::Base#remove_connectionActiveRecord::Base.configurations.default_hashActiveRecord::Base.arel_attributeActiveRecord::Base.connection_configTasks::DatabaseTasks.specTasks::DatabaseTasks.current_configTasks::DatabaseTasks.dump_filenameTasks::DatabaseTasks.schema_fileModel.reorder(nil).firstdb:schema:load_if_rubydb:structure:dumpdb:structure:loaddb:structure:load_if_sqldb:structure:dump:#{name}
Merging conditions on the same column no longer maintain both conditions, and will be consistently replaced by the latter condition.
Model.reorder(nil).firstdb:schema:load_if_rubydb:structure:dumpdb:structure:loaddb:structure:load_if_sqldb:structure:dump:#{name}#to_s#to_formatted_sArrayRangeDateDateTimeActiveSupport::Testing::DeprecationPathname#existenceActiveSupport::Multibyte::Unicode.default_normalization_formRange#include?URI.parserconfig.active_support.use_sha1_digestsObject#with_options&blockActiveSupport::OptionMergerRails.application.executorActiveSupport::DescendantsTrackerClass#descendantsActiveSupport::DescendantsTracker.direct_descendantsActiveSupport::DescendantsTracker#direct_descendantsDigest::UUID.uuid_from_hashDigest::UUIDconfig.active_support.use_rfc4122_namespaced_uuidstrueActiveSupport::Inflector::Inflections#clear(:acronyms)inflector.clearinflector.clear(:all)
Remove IE6-7-8 file download related hack/fix from ActionController::DataStreaming module.
Drop support for the SERVER_ADDR header.
SERVER_ADDR
Remove inline styles and address basic accessibility issues on rescue templates.
Remove legacy default media=screen from stylesheet_link_tag.
media=screenstylesheet_link_tag
Remove support to Marshal load Rails 5.x ActiveModel::AttributeSet format.
ActiveModel::AttributeSet
Remove support to Marshal and YAML load Rails 5.x error format.
Remove deprecated support to use []= in ActiveModel::Errors#messages.
ActiveModel::Errors#messages
Remove deprecated support to delete errors from ActiveModel::Errors#messages.
deleteActiveModel::Errors#messages
Remove deprecated support to clear errors from ActiveModel::Errors#messages.
clearActiveModel::Errors#messages
Remove deprecated support concat errors to ActiveModel::Errors#messages.
ActiveModel::Errors#messages
Remove deprecated ActiveModel::Errors#to_xml.
ActiveModel::Errors#to_xml
Remove deprecated ActiveModel::Errors#slice!
ActiveModel::Errors#slice!
Remove deprecated ActiveModel::Errors#to_h.
ActiveModel::Errors#to_h
Remove deprecated enumeration of ActiveModel::Errors instances as a Hash.
ActiveModel::Errors
Remove deprecated ActiveRecord::Connection#allowed_index_name_length.
ActiveRecord::Connection#allowed_index_name_length
Remove deprecated ActiveRecord::Result#map! and ActiveRecord::Result#collect!
ActiveRecord::Result#map!ActiveRecord::Result#collect!
Remove deprecated ActiveRecord::Base.configurations.to_h.
ActiveRecord::Base.configurations.to_h
Remove deprecated environment and name arguments from Tasks::DatabaseTasks.schema_up_to_date?
environmentnameTasks::DatabaseTasks.schema_up_to_date?
Remove deprecated Rails::Generators::Testing::Behaviour.
Rails::Generators::Testing::Behaviour
Raises ArgumentError when reading config.x.something with arguments.
config.xArgumentError
Revert breaking changes to has_one relationship deleting the old record before the new one is validated.
has_one
Security37
Disables libvips's unfuzzed image loaders and savers via Vips.block_untrusted(true) at boot, addressing GHSA-xr9x-r78c-5hrm and CVE-2026-66066.
Vips.block_untrusted(true)Vips::Errorconfig.active_storage.variable_content_types
Rejects scientific notation in NumberConverter.
NumberConverter
Fixes SafeBuffer#% to preserve unsafe status.
SafeBuffer#%
Improves performance of NumberToDelimitedConverter.
NumberToDelimitedConverter
Skips blank attribute names in tag helpers to avoid generating invalid HTML.
Filters user supplied metadata in DirectUploadController.
DirectUploadController
Adds a configurable maximum streaming chunk size, defaulting to 100mb for blob byte ranges.
Limits range requests to a single range.
Prevents path traversal in DiskService; path_for raises InvalidKeyError for dot segments or paths outside the storage root.
DiskServiceDiskService#path_forInvalidKeyErrorDiskController
Prevents glob injection in DiskService#delete_prefixed by escaping glob metacharacters before Dir.glob.
DiskService#delete_prefixedDir.glob
Calls inspect on ids in RecordNotFound error to address CVE-2025-55193.
RecordNotFound
Removes dangerous transformations to address CVE-2025-24293.
Sanitizes ActionText HTML ContentAttachment in the Trix edit view.
ActionText::ContentAttachment
Fixes a ReDoS vulnerability in Accept header parsing.
Add validation to content security policies to disallow spaces and semicolons.
Avoid regex backtracking in HTTP Token authentication.
Avoid regex backtracking in query parameter filtering.
Avoid regex backtracking in block_format helper.
block_format
Avoid backtracing in plain_text_for_blockquote_node.
Include the HTTP Permissions-Policy on non-HTML Content-Types [CVE-2024-28103].
Upgrade Trix to 1.3.2 to fix CVE-2024-34341.
Fix possible XSS vulnerability with the translate method in controllers.
translate
Use a temporary file for storing unencrypted files while editing.
Raise an exception if illegal characters are provide to redirect_to [CVE-2023-28362].
Implement SafeBuffer#bytesplice.
Ignore certain data-* attributes in rails-ujs when element is contenteditable.
Avoid regex backtracking in Inflector.underscore.
Make sanitize_as_sql_comment more strict.
Added integer width check to PostgreSQL::Quoting.
Fix sec issue with _url_host_allowed?
_url_host_allowed?
Avoid regex backtracking on If-None-Match header.
Use string#split instead of regex for domain parts.
Change ActiveRecord::Coders::YAMLColumn default to safe_load.
config.active_storage.use_yaml_unsafe_loadconfig.active_record.yaml_column_permitted_classes
Fix and add protections for XSS in ActionView::Helpers and ERB::Util.
ActionView::HelpersERB::UtilERB::Util.xml_name_escape
Added image transformation validation via configurable allow-list.
Under certain circumstances, the middleware isn't informed that the response body has been fully closed which result in request state not being fully reset before the next request.
Fix X_FORWARDED_HOST protection. [CVE-2021-44528].
Platform1
Raises minimum supported libvips to 8.13 and ruby-vips to 2.2.1, raising RuntimeError at boot when ruby-vips is installed and either minimum is unmet.
RuntimeError
Deprecated43
Deprecates ActiveSupport::ProxyObject in favor of Ruby's built-in BasicObject.
ActiveSupport::ProxyObjectBasicObject
Deprecates ActiveRecord::ImmutableRelation in favor of ActiveRecord::UnmodifiableRelation.
ActiveRecord::ImmutableRelationActiveRecord::UnmodifiableRelation
Deprecates the query_constraints association option in favor of foreign_key.
query_constraintsforeign_key
Deprecates ActiveRecord::Base.connection in favor of .lease_connection as a soft deprecation with no warnings.
ActiveRecord::Base.connectionlease_connection
Deprecates ActiveRecord::ConnectionAdapters::ConnectionPool#connection in favor of lease_connection.
ActiveRecord::ConnectionAdapters::ConnectionPool#connectionlease_connection
Deprecates Rails.application.config.active_record.commit_transaction_on_non_local_return.
Rails.application.config.active_record.commit_transaction_on_non_local_return
Deprecates Rails.application.config.active_record.allow_deprecated_singular_associations_name.
Rails.application.config.active_record.allow_deprecated_singular_associations_name
Deprecates ENV["SCHEMA_CACHE"] in favor of schema_cache_path in the database configuration.
ENV["SCHEMA_CACHE"]schema_cache_path
Deprecates config.active_record.warn_on_records_fetched_greater_than since sql.active_record notifications now include a :row_count field.
config.active_record.warn_on_records_fetched_greater_thansql.active_recordrow_count
Deprecates defining an enum with keyword arguments in favor of positional arguments.
enum
Deprecates passing strings to ActiveRecord::Tasks::DatabaseTasks.cache_dump_filename; pass a DatabaseConfig object instead.
ActiveRecord::Tasks::DatabaseTasks.cache_dump_filenameActiveRecord::DatabaseConfigurations::DatabaseConfig
Deprecates passing nil as the value for the model: argument to form_with.
form_withmodel
Deprecates passing content to void elements when using tag.br type tag builders.
tag.br
Deprecates Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality.
Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality
Deprecates Rails.application.config.active_job.use_big_decimal_serialize.
Rails.application.config.active_job.use_big_decimal_serialize
Deprecates config.active_support.to_time_preserves_timezone.
config.active_support.to_time_preserves_timezone
Deprecates DateAndTime::Compatibility.preserve_timezone.
DateAndTime::Compatibility.preserve_timezone
Deprecate SafeBuffer#clone_empty.
SafeBuffer#clone_empty
Deprecate usage of the singleton ActiveSupport::Deprecation.
ActiveSupport::DeprecationActiveSupport::Deprecation.warnActiveSupport::Deprecation.silencebehavior=disallowed_behavior=disallowed_warnings=
Deprecate config.active_support.use_rfc4122_namespaced_uuids.
config.active_support.use_rfc4122_namespaced_uuids
Deprecate config.active_support.remove_deprecated_time_with_zone_name.
config.active_support.remove_deprecated_time_with_zone_name
Deprecate config.active_support.disable_to_s_conversion.
config.active_support.disable_to_s_conversion
Deprecated initializing a ActiveSupport::Cache::MemCacheStore with an instance of Dalli::Client.
ActiveSupport::Cache::MemCacheStoreDalli::Client
ActiveSupport::Deprecation behavior callbacks can now receive the deprecator instance as an argument.
ActiveSupport::Deprecationdebug
ActiveSupport::Deprecation#disallowed_warnings now affects the instance on which it is configured.
ActiveSupport::Deprecation#disallowed_warningsActiveSupport::DeprecationActiveSupport::Deprecation.disallowed_warningsActiveSupport::Deprecation.warn
Deprecated :pool_size and :pool_timeout options for configuring connection pooling in cache stores.
:pool_size:pool_timeout:pool
Deprecate preserving the pre-Ruby 2.4 behavior of to_time.
to_timefalse
Deprecate Notification::Event's #children and #parent_of?
Notification::Event#children#parent_of?
Deprecate rewhere argument on #merge.
rewhere#merge
Deprecate read_attribute(:id) returning the primary key if the primary key is not :id.
read_attribute(:id):id#id
Deprecate name argument on #remove_connection.
name#remove_connection
Deprecate check_pending! in favor of check_all_pending!
check_pending!check_all_pending!
Deprecate deferrable: true option of add_foreign_key.
add_foreign_key
Deprecate delegation from Base to connection_handler.
Baseconnection_handlerBase.clear_all_connections!Base.clear_active_connections!Base.clear_reloadable_connections!Base.flush_idle_connections!
Deprecate quoting ActiveSupport::Duration as an integer.
ActiveSupport::Duration
Deprecate all_connection_pools and make connection_pool_list more explicit.
all_connection_poolsconnection_pool_list:all
Set scheduled_at attribute as a Time object instead of epoch seconds, and serialize and deserialize the value when enqueued.
scheduled_atenqueued_at
Address Selenium :capabilities deprecation warning.
:capabilities
Deprecate Rails.application.config.action_controller.urlsafe_csrf_tokens.
Rails.application.config.action_controller.urlsafe_csrf_tokens
Deprecate poltergeist and webkit (capybara-webkit) driver registration for system testing (they will be removed in Rails 7.1).
poltergeistwebkitcuprite
Deprecate the ability to assign a single value to config.action_dispatch.trusted_proxies as RemoteIp middleware behaves inconsistently depending on whether this is configured with a single value or…
config.action_dispatch.trusted_proxiesRemoteIp
Deprecate render locals to be assigned to instance variables.
render
Deprecate Tasks::DatabaseTasks.schema_file_type.
Tasks::DatabaseTasks.schema_file_type

Generated by DepDelta from published Ruby source. Not mixed with prose notes.

  • removed: class DummyCompiler < ERB::Compiler
  • removed: class DummyERB < ERB
  • removed: method DummyCompiler.compile_content(_, _)
  • removed: method DummyERB.make_compiler(_)
  • removed: module Css
  • added: class DummyConfig
  • added: constructor DummyConfig(_)
  • added: method DummyConfig.to_s()
  • added: static method Rails.deprecator()
  • added: static method Rails.error()
  • removed: module Generators
  • removed: class AssetsGenerator < Rails::Generators::NamedBase
  • removed: class ScaffoldGenerator < Rails::Generators::NamedBase
  • removed: method AssetsGenerator.copy_stylesheet()
  • removed: method ScaffoldGenerator.copy_stylesheet()
  • added: class ProfileReporter < Reporter
  • added: constructor ProfileReporter(_ = …, _ = …)
  • added: method ProfileReporter.record(_)
  • added: method ProfileReporter.report()
  • removed: class AppUpdater
  • removed: class Secrets
  • removed: method AppBuilder.bin_when_updating()
  • removed: method AppBuilder.config()
  • removed: method AppBuilder.config_target_version()
  • removed: method AppBuilder.config_when_updating()
  • removed: method AppBuilder.credentials()
  • removed: method AppBuilder.database_yml()
  • removed: method AppBuilder.db()
  • removed: method AppBuilder.lib()
  • removed: method AppBuilder.log()
  • removed: method AppBuilder.master_key()
  • removed: method AppBuilder.package_json()
  • removed: method AppBuilder.public_directory()
  • removed: method AppBuilder.storage()
  • removed: method AppBuilder.system_test()
  • removed: method AppBuilder.test()
  • removed: method AppBuilder.tmp()
  • removed: method AppBuilder.vendor()
  • removed: method AppBuilder.yarn_when_updating()
  • removed: method Application.secrets()
  • removed: method ConsoleMethods.app(_ = …)
  • removed: method ConsoleMethods.controller()
  • removed: method ConsoleMethods.helper()
  • removed: method ConsoleMethods.new_session()
  • removed: method ConsoleMethods.reload!(_ = …)
  • removed: method DBConsole.config()
  • removed: method PluginBuilder.gemfile_entry()
  • removed: method PluginBuilder.test_dummy_assets()
  • removed: method SourceAnnotationExtractor.extract_annotations_from(_, _)
  • removed: module Autoloaders
  • removed: property Application.secrets: writer
  • removed: protected method Application.validate_secret_key_base(_)
  • removed: static method AppUpdater.app_generator()
  • removed: static method AppUpdater.invoke_from_app_generator(_)
  • removed: static method Autoloaders.main()
  • removed: static method Autoloaders.once()
  • removed: static method Command.print_commands()
  • removed: static method Secrets.decrypt(_)
  • removed: static method Secrets.encrypt(_)
  • removed: static method Secrets.key()
  • removed: static method Secrets.parse(_, env:)
  • removed: static method Secrets.read()
  • removed: static method Secrets.read_for_editing()
  • removed: static method Secrets.write(_)
  • removed: static property Secrets.root: writer
  • changed: class Server < ::Rack::Server → class Server < Rackup::Server
  • changed: method Application.key_generator() → method Application.key_generator(_ = …)
  • changed: method PluginBuilder.bin(_ = …) → method PluginBuilder.bin()
  • changed: static method Autoloaders.each() → method Autoloaders.each()
  • changed: static method Autoloaders.log!() → method Autoloaders.log!()
  • changed: static method Autoloaders.zeitwerk_enabled?() → method Autoloaders.zeitwerk_enabled?()
  • changed: static set Autoloaders.logger(_) → set Autoloaders.logger(_)
  • added: class Autoloaders
  • added: class HealthController < ActionController::Base
  • added: class PwaController < Rails::ApplicationController
  • added: class ZeitwerkChecker
  • added: const Command.VERSION_MAPPINGS
  • added: const InfoController.RFC2396_PARSER
  • added: const Rackup.Server
  • added: constructor Autoloaders()
  • added: method AppBuilder.cifiles()
  • added: method AppBuilder.dockerfiles()
  • added: method AppBuilder.node_version()
  • added: method AppBuilder.rubocop()
  • added: method Application.deprecators()
  • added: method Application.load_generators(_ = …)
  • added: method Application.message_verifiers()
  • added: method Application.name()
  • added: method BacktraceCleaner.clean(_, _ = …)
  • added: method BacktraceCleaner.clean_frame(_, _ = …)
  • added: method BacktraceCleaner.filter(_, _ = …)
  • added: method HealthController.show()
  • added: method MailersController.download()
  • added: method PluginBuilder.cifiles()
  • added: method PluginBuilder.rubocop()
  • added: method PluginBuilder.test_dummy_sprocket_assets()
  • added: method PwaController.manifest()
  • added: method PwaController.service_worker()
  • added: method Railtie.inspect()
  • added: method TestUnitReporter.prerecord(_, _)
  • added: module Rackup
  • added: property Application.autoloaders: reader
  • added: property Autoloaders.main: reader
  • added: property Autoloaders.once: reader
  • added: protected method Application.ensure_generator_templates_added()
  • added: protected static method Railtie.increment_load_index()
  • added: protected static property Railtie.load_index: reader
  • added: static method Command.application_root()
  • added: static method Command.printing_commands()
  • added: static method ConsoleMethods.include(_, ...)
  • added: static method ConsoleMethods.raise_deprecation_warning()
  • added: static method Railtie.<=>(_)
  • added: static method ZeitwerkChecker.check()
  • added: method EdgeTask.badge_version()
  • added: method EdgeTask.canonical_url()
  • added: method StableTask.badge_version()
  • added: method StableTask.canonical_url()
  • removed: property Configuration.autoloader: reader
  • removed: property Configuration.enable_dependency_loading: accessor
  • removed: property Configuration.read_encrypted_secrets: accessor
  • removed: property Configuration.secret_key_base: accessor
  • removed: set Configuration.autoloader(_)
  • changed: property Configuration.log_level: accessor → property Configuration.log_level: reader
  • added: method Configuration.autoload_lib(ignore:)
  • added: method Configuration.autoload_lib_once(ignore:)
  • added: method Configuration.enable_reloading()
  • added: method Configuration.inspect()
  • added: method Configuration.read_encrypted_secrets()
  • added: method Configuration.reloading_enabled?()
  • added: method Configuration.secret_key_base()
  • added: property Configuration.assume_ssl: accessor
  • added: property Configuration.broadcast_log_level: reader
  • added: property Configuration.dom_testing_default_html_version: accessor
  • added: property Configuration.log_file_size: accessor
  • added: property Configuration.precompile_filter_parameters: accessor
  • added: property Configuration.sandbox_by_default: accessor
  • added: property Configuration.server_timing: accessor
  • added: property Configuration.yjit: accessor
  • added: property RoutesReloader.run_after_load_paths: writer
  • added: set Configuration.enable_reloading(_)
  • added: set Configuration.log_level(_)
  • added: set Configuration.read_encrypted_secrets(_)
  • added: set Configuration.secret_key_base(_)
  • removed: class MutexHook
  • removed: constructor MutexHook(_ = …)
  • removed: method MutexHook.complete(_)
  • removed: method MutexHook.run()
  • added: class MonitorHook
  • added: constructor MonitorHook(_ = …)
  • added: method MonitorHook.complete(_)
  • added: method MonitorHook.run()
  • added: module Inflector
  • added: static method Inflector.camelize(_, _)
  • added: static method Inflector.inflect(_)
  • removed: class SecretsCommand < Rails::Command::Base
  • removed: const ServerCommand.RACK_SERVERS
  • removed: method Actions.require_application_and_environment!()
  • removed: method Actions.require_environment!()
  • removed: method SecretsCommand.edit()
  • removed: method SecretsCommand.setup()
  • removed: method SecretsCommand.show()
  • removed: module Spellchecker
  • removed: static method RunnerCommand.banner(*)
  • removed: static method Spellchecker.suggest(_, from:)
  • changed: method Base.help() → static method Base.help(_, *)
  • changed: method EncryptedCommand.edit(_) → method EncryptedCommand.edit(*)
  • changed: method EncryptedCommand.show(_) → method EncryptedCommand.show(*)
  • changed: static method Base.banner(*) → static method Base.banner(_ = …, *)
  • changed: static method Base.executable() → static method Base.executable(_ = …)
  • added: class AboutCommand < Base
  • added: class BootCommand < Base
  • added: class CorrectableNameError < StandardError
  • added: class DevcontainerCommand < Base
  • added: class GemHelpCommand < Base
  • added: class MiddlewareCommand < Base
  • added: class RestartCommand < Base
  • added: class SecretCommand < Base
  • added: class UnrecognizedCommandError < CorrectableNameError
  • added: class UnusedRoutesCommand < Rails::Command::Base
  • added: const ServerCommand.RACK_HANDLERS
  • added: const ServerCommand.RACK_HANDLER_GEMS
  • added: const ServerCommand.RECOMMENDED_SERVER
  • added: const TestCommand.EXACT_TEST_ARGUMENT_PATTERN
  • added: constructor CorrectableNameError(_, _, _)
  • added: constructor EnvironmentArgument(...)
  • added: constructor UnrecognizedCommandError(_)
  • added: method AboutCommand.perform()
  • added: method Actions.boot_application!()
  • added: method Actions.load_environment_config!()
  • added: method BootCommand.perform(*)
  • added: method CorrectableNameError.corrections()
  • added: method CorrectableNameError.detailed_message(...)
  • added: method DevcontainerCommand.perform(*)
  • added: method GemHelpCommand.perform()
  • added: method HelpCommand.help_extended(*)
  • added: method MiddlewareCommand.perform()
  • added: method RestartCommand.perform()
  • added: method SecretCommand.perform()
  • added: method TestCommand.all(*)
  • added: method TestCommand.functionals(*)
  • added: method TestCommand.generators(*)
  • added: method TestCommand.system(*)
  • added: method TestCommand.units(*)
  • added: method UnusedRoutesCommand.perform(*)
  • added: module App
  • added: property CorrectableNameError.name: reader
  • added: static method Base.class_usage()
  • added: static method TestCommand.executable(*)
  • added: class UpdateCommand < Base
  • added: method UpdateCommand.active_storage()
  • added: method UpdateCommand.bin()
  • added: method UpdateCommand.configs()
  • added: method UpdateCommand.perform()
  • added: method UpdateCommand.public_directory()
  • removed: method Diffing.ensure_rails_credentials_driver_is_set()
  • added: const Diffing.GITATTRIBUTES_ENTRY
  • added: method Diffing.disenroll_project_from_credentials_diffing()
  • added: method Diffing.ensure_diffing_driver_is_configured()
  • changed: method ChangeCommand.perform() → method ChangeCommand.perform(*)
  • added: class RouteInfo
  • added: constructor RouteInfo(_)
  • added: method RouteInfo.unused?()
  • changed: method MiddlewareStackProxy.delete(*) → method MiddlewareStackProxy.delete(...)
  • changed: method MiddlewareStackProxy.insert(*) → method MiddlewareStackProxy.insert(...)
  • changed: method MiddlewareStackProxy.insert_after(*) → method MiddlewareStackProxy.insert_after(...)
  • changed: method MiddlewareStackProxy.insert_before(*) → method MiddlewareStackProxy.insert_before(...)
  • changed: method MiddlewareStackProxy.move(*) → method MiddlewareStackProxy.move(...)
  • changed: method MiddlewareStackProxy.move_after(*) → method MiddlewareStackProxy.move_after(...)
  • changed: method MiddlewareStackProxy.move_before(*) → method MiddlewareStackProxy.move_before(...)
  • changed: method MiddlewareStackProxy.swap(*) → method MiddlewareStackProxy.swap(...)
  • changed: method MiddlewareStackProxy.unshift(*) → method MiddlewareStackProxy.unshift(...)
  • changed: method MiddlewareStackProxy.use(*) → method MiddlewareStackProxy.use(...)
  • added: method Generators.apply_rubocop_autocorrect_after_generate!()
  • removed: method BacktraceCleaner.filter_backtrace(_)
  • removed: module BacktraceCleaner
  • added: class AppInstance < NewSession
  • added: class ControllerHelper < RailsHelperBase
  • added: class ControllerInstance < RailsHelperBase
  • added: class IRBConsole
  • added: class NewSession < RailsHelperBase
  • added: class RailsHelperBase < IRB::HelperMethod::Base
  • added: class ReloadHelper < RailsHelperBase
  • added: constructor IRBConsole(_)
  • added: method AppInstance.execute(_ = …)
  • added: method ControllerHelper.execute()
  • added: method ControllerInstance.execute()
  • added: method IRBConsole.colorized_env()
  • added: method IRBConsole.name()
  • added: method IRBConsole.start()
  • added: method NewSession.execute(*)
  • added: method ReloadHelper.execute()
  • removed: method Configuration.autoload_once_paths()
  • removed: method Configuration.autoload_paths()
  • removed: method Configuration.eager_load_paths()
  • added: method Configuration.all_autoload_once_paths()
  • added: method Configuration.all_autoload_paths()
  • added: method Configuration.all_eager_load_paths()
  • added: property Configuration.autoload_once_paths: reader
  • added: property Configuration.autoload_paths: reader
  • added: property Configuration.eager_load_paths: reader
  • removed: class ARGVScrubber
  • removed: class AssetsGenerator < NamedBase
  • removed: class PluginGenerator < AppBase
  • removed: const AppGenerator.WEBPACKS
  • removed: const Database.JDBC_DATABASES
  • removed: constructor ARGVScrubber(_ = …)
  • removed: constructor AppGenerator(*)
  • removed: constructor Database(*)
  • removed: constructor PluginGenerator(*)
  • removed: method ARGVScrubber.prepare!()
  • removed: method AppGenerator.create_active_record_files()
  • removed: method AppGenerator.create_app_files()
  • removed: method AppGenerator.create_bin_files()
  • removed: method AppGenerator.create_boot_file()
  • removed: method AppGenerator.create_config_files()
  • removed: method AppGenerator.create_credentials()
  • removed: method AppGenerator.create_db_files()
  • removed: method AppGenerator.create_lib_files()
  • removed: method AppGenerator.create_log_files()
  • removed: method AppGenerator.create_master_key()
  • removed: method AppGenerator.create_public_files()
  • removed: method AppGenerator.create_root_files()
  • removed: method AppGenerator.create_storage_files()
  • removed: method AppGenerator.create_system_test_files()
  • removed: method AppGenerator.create_test_files()
  • removed: method AppGenerator.create_tmp_files()
  • removed: method AppGenerator.create_vendor_files()
  • removed: method AppGenerator.delete_action_cable_files_skipping_action_cable()
  • removed: method AppGenerator.delete_action_mailer_files_skipping_action_mailer()
  • removed: method AppGenerator.delete_active_job_folder_if_skipping_active_job()
  • removed: method AppGenerator.delete_api_initializers()
  • removed: method AppGenerator.delete_app_assets_if_api_option()
  • removed: method AppGenerator.delete_app_helpers_if_api_option()
  • removed: method AppGenerator.delete_app_views_if_api_option()
  • removed: method AppGenerator.delete_application_record_skipping_active_record()
  • removed: method AppGenerator.delete_assets_initializer_skipping_sprockets()
  • removed: method AppGenerator.delete_js_folder_skipping_javascript()
  • removed: method AppGenerator.delete_js_packs_when_minimal_skipping_webpack()
  • removed: method AppGenerator.delete_new_framework_defaults()
  • removed: method AppGenerator.delete_non_api_initializers_if_api_option()
  • removed: method AppGenerator.delete_public_files_if_api_option()
  • removed: method AppGenerator.display_upgrade_guide_info()
  • removed: method AppGenerator.finish_template()
  • removed: method AppGenerator.run_after_bundle_callbacks()
  • removed: method AppGenerator.update_active_storage()
  • removed: method AppGenerator.update_bin_files()
  • removed: method AppGenerator.update_bin_yarn()
  • removed: method AppGenerator.update_config_files()
  • removed: method CredentialsGenerator.add_credentials_file_silently(_ = …)
  • removed: method Database.convert_database_option_for_jruby()
  • removed: method Database.gem_for_database(_ = …)
  • removed: method PluginGenerator.create_app_files()
  • removed: method PluginGenerator.create_assets_manifest_file()
  • removed: method PluginGenerator.create_bin_files()
  • removed: method PluginGenerator.create_config_files()
  • removed: method PluginGenerator.create_lib_files()
  • removed: method PluginGenerator.create_public_stylesheets_files()
  • removed: method PluginGenerator.create_root_files()
  • removed: method PluginGenerator.create_test_dummy_files()
  • removed: method PluginGenerator.create_test_files()
  • removed: method PluginGenerator.finish_template()
  • removed: method PluginGenerator.name()
  • removed: method PluginGenerator.namespaced_name()
  • removed: method PluginGenerator.plugin_path()
  • removed: method PluginGenerator.underscored_name()
  • removed: method PluginGenerator.update_gemfile()
  • removed: method ScaffoldGenerator.handle_skip()
  • removed: module Database
  • removed: static method ARGVScrubber.default_rc_file()
  • removed: static method AppGenerator.banner()
  • changed: class AppGenerator < AppBase → class AppGenerator
  • added: class Database
  • added: class DevcontainerGenerator < Base
  • added: const AppBase.ASSET_PIPELINE_OPTIONS
  • added: const AppBase.BUN_VERSION
  • added: const AppBase.CSS_OPTIONS
  • added: const AppBase.JAVASCRIPT_OPTIONS
  • added: const AppBase.NODE_LTS_VERSION
  • added: const AppBase.OPTION_IMPLICATIONS
  • added: const BenchmarkGenerator.IPS_GEM_USED_REGEXP
  • added: const GeneratedAttribute.DEFAULT_TYPES
  • added: method Database.base_package()
  • added: method Database.build_package()
  • added: method Database.feature()
  • added: method Database.feature_name()
  • added: method Database.gem()
  • added: method Database.host()
  • added: method Database.name()
  • added: method Database.port()
  • added: method Database.service()
  • added: method Database.socket()
  • added: method Database.volume()
  • added: method DevcontainerGenerator.create_devcontainer()
  • added: method DevcontainerGenerator.update_application_system_test_case()
  • added: method DevcontainerGenerator.update_database_yml()
  • added: method GeneratedAttribute.to_s()
  • added: static method AppBase.edge_branch()
  • added: static method Database.all()
  • added: static method Database.build(_)
  • added: static method GeneratedAttribute.dangerous_name?(_)
  • added: static method GeneratedAttribute.valid_index_type?(_)
  • added: static method GeneratedAttribute.valid_type?(_)
  • added: static method MigrationGenerator.exit_on_failure?()
  • added: static method ResourceGenerator.desc(_ = …)
  • removed: method GemfileEntry.version()
  • added: method GemfileEntry.to_s()
  • added: static method GemfileEntry.floats(_, _ = …)
  • added: class MariaDB < Database
  • added: class MySQL < Database
  • added: class Null < Database
  • added: class PostgreSQL < Database
  • added: class SQLite3 < Database
  • added: method MariaDB.base_package()
  • added: method MariaDB.build_package()
  • added: method MariaDB.feature_name()
  • added: method MariaDB.gem()
  • added: method MariaDB.name()
  • added: method MariaDB.port()
  • added: method MariaDB.service()
  • added: method MySQL.base_package()
  • added: method MySQL.build_package()
  • added: method MySQL.feature_name()
  • added: method MySQL.gem()
  • added: method MySQL.name()
  • added: method MySQL.port()
  • added: method MySQL.service()
  • added: method MySqlSocket.host()
  • added: method MySqlSocket.socket()
  • added: method Null.base_package()
  • added: method Null.build_package()
  • added: method Null.feature_name()
  • added: method Null.name()
  • added: method Null.port()
  • added: method Null.service()
  • added: method Null.volume()
  • added: method PostgreSQL.base_package()
  • added: method PostgreSQL.build_package()
  • added: method PostgreSQL.feature_name()
  • added: method PostgreSQL.gem()
  • added: method PostgreSQL.name()
  • added: method PostgreSQL.port()
  • added: method PostgreSQL.service()
  • added: method SQLite3.base_package()
  • added: method SQLite3.build_package()
  • added: method SQLite3.feature_name()
  • added: method SQLite3.gem()
  • added: method SQLite3.name()
  • added: method SQLite3.port()
  • added: method SQLite3.service()
  • added: module MySqlSocket
  • added: const ChangeGenerator.BASE_PACKAGES
  • added: const ChangeGenerator.BUILD_PACKAGES
  • added: method ChangeGenerator.edit_devcontainer_files()
  • added: method ChangeGenerator.edit_dockerfile()
  • removed: method Behaviour.create_generated_attribute(_, _ = …, _ = …)
  • removed: method Behaviour.generator(_ = …, _ = …, _ = …)
  • removed: method Behaviour.run_generator(_ = …, _ = …)
  • removed: module Behaviour
  • added: method Assertions.assert_initializer(_, *)
  • added: method Behavior.create_generated_attribute(_, _ = …, _ = …)
  • added: method Behavior.generator(_ = …, _ = …, _ = …)
  • added: method Behavior.run_generator(_ = …, _ = …)
  • added: module Behavior
  • added: method ClassMethods.arguments(_)
  • added: method ClassMethods.destination(_)
  • added: method ClassMethods.tests(_)
  • added: module ClassMethods
  • removed: method ClassMethods.arguments(_)
  • removed: method ClassMethods.destination(_)
  • removed: method ClassMethods.tests(_)
  • removed: module ClassMethods
  • added: method Configuration.after_routes_loaded()
  • removed: class MissingKeyError < RuntimeError
  • removed: constructor MissingKeyError()
  • added: class ParserExtractor < Struct.new(:pattern)
  • added: class PatternExtractor < Struct.new(:pattern)
  • added: method ParserExtractor.annotations(_)
  • added: method PatternExtractor.annotations(_)
  • added: class Parser < Ripper
  • added: constructor Parser(_, pattern:)
  • added: method Parser.on_comment(_)
  • added: property Parser.comments: reader
  • added: property Parser.pattern: reader
  • removed: static method Runner.rake_run(_ = …)
  • added: class InvalidTestError < ArgumentError
  • added: class TestParser < Ripper
  • added: const Runner.PATH_ARGUMENT_PATTERN
  • added: const Runner.TEST_FOLDERS
  • added: constructor InvalidTestError(_, _)
  • added: constructor TestParser(*)
  • added: method InvalidTestError.backtrace(*)
  • added: method TestParser.first_arg(_, *)
  • added: method TestParser.just_lineno(*)
  • added: method TestParser.on_arg_paren(_, *)
  • added: method TestParser.on_args_add(_, _)
  • added: method TestParser.on_args_add_block(_, *)
  • added: method TestParser.on_args_new()
  • added: method TestParser.on_bodystmt(_, *)
  • added: method TestParser.on_brace_block(*)
  • added: method TestParser.on_command(_, *)
  • added: method TestParser.on_command_call(*, _, _)
  • added: method TestParser.on_def(_, *)
  • added: method TestParser.on_do_block(*)
  • added: method TestParser.on_ident(*)
  • added: method TestParser.on_method_add_arg(_, *)
  • added: method TestParser.on_method_add_block(_, _)
  • added: method TestParser.on_stmts_add(_, *)
  • added: method TestParser.on_stmts_new(*)
  • added: method TestParser.parse()
  • added: static method Runner.run_from_rake(_, _ = …)
  • added: static method TestParser.definition_for(_)