Latest in branch 7.0
7.0.10
Released 28 Oct 2025
(7 months ago)
SoftwareRuby on Rails
Version7.0
Status
End of life
Initial release7.0.0
15 Dec 2021
(4 years ago)
Latest release7.0.10
28 Oct 2025
(7 months ago)
End of bug fixes15 Oct 2023
(Ended 2 years, 7 months ago)
End of security fixes01 Apr 2025
(Ended 1 year, 1 month ago)
Release noteshttps://github.com/rails/rails/releases/tag/v7.0.10
Source codehttps://github.com/rails/rails/tree/v7.0.10
Downloadhttps://github.com/rails/rails/releases/tag/v7.0.10
Ruby on Rails 7.0 ReleasesView full list

What Is New in Ruby on Rails 7.0

Category Highlights
Improvements Sprockets optional, button_to infers HTTP verb, interval columns return ActiveSupport::Duration, early-return transaction blocks now roll back, merge conditions consistently replace earlier clauses.
Breaking Changes Removal of many deprecated configs (e.g., ActionDispatch::Response.return_only_media_type_on_content_type), ActionMailer::DeliveryJob removed in favor of ActionMailer::MailDeliveryJob, numerous ActiveRecord rake tasks and methods deleted, ActionMailbox credentials removed.
Deprecations Tasks::DatabaseTasks.schema_file_type deprecated, passing format to #to_s deprecated (use #to_fs), config.active_support.disable_to_s_conversion introduced, other minor deprecations across ActiveSupport and ActiveJob.

How does Rails 7 treat the asset pipeline and Sprockets?

In Rails 7 the asset pipeline is no longer a hard dependency; Sprockets is optional.

If your application still relies on Sprockets, add the explicit gem to your Gemfile:

gem "sprockets-rails"

Without this line the rails gem will not pull in sprockets-rails, keeping the boot time lean for API-only or Hotwire-centric apps.

What are the most impactful Active Record changes in Rails 7?

Rails 7 introduces several behavior changes that affect how queries and transactions work.

  • Interval columns now return ActiveSupport::Duration objects. To retain the old string behavior, declare the attribute as :string in the model.
  • Transaction blocks that return early are now rolled back. Previously an early return would commit the transaction, which could hide timeout-related bugs.
  • Merge conditions on the same column now replace the earlier condition. The rewhere: true option is no longer needed.

Example of the new merge behavior:

Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]

How has Action View's button_to helper been enhanced in Rails 7?

In Rails 7 button_to can infer the HTTP verb from an Active Record object used in the URL.

Before:

<input type="hidden" name="_method" value="post" autocomplete="off" />

After:

<input type="hidden" name="_method" value="patch" autocomplete="off" />

Usage example:

button_to("Do a POST", [:do_post_action, Workshop.find(1)])

This reduces boilerplate when building RESTful forms that target a specific record.

Which deprecated APIs were removed in Rails 7 and what should I replace them with?

Rails 7 removed a large set of deprecated APIs; most of them have direct modern equivalents or are simply no longer needed.

  • ActionDispatch::Response.return_only_media_type_on_content_type - no replacement; the default behavior is now always applied.
  • ActionMailer::DeliveryJob and ActionMailer::Parameterized::DeliveryJob - use ActionMailer::MailDeliveryJob instead.
  • Various ActiveRecord::Base configuration methods (e.g., allow_unsafe_raw_sql, configurations.to_h) - rely on the new ActiveRecord::DatabaseConfigurations API.
  • Deprecated rake tasks such as db:schema:load_if_ruby - use the standard db:schema:load task.
  • ActionMailbox credentials like Rails.application.credentials.action_mailbox.mailgun_api_key - configure the provider directly via environment variables.

Removing these calls and updating to the new APIs will prevent NameError exceptions during boot.

Frequently Asked Questions

What should I do before upgrading an existing app to Rails 7?
Run the full test suite, upgrade first to Rails 6.1, fix any deprecation warnings, then proceed with the Rails 7 upgrade.

How can I re-enable Sprockets if my app still needs it?
Add gem "sprockets-rails" to your Gemfile and run bundle install.

How do I keep interval columns as strings after the upgrade?
Declare the attribute in the model with attribute :column, :string.

What is the new job class for delivering mail in Rails 7?
Use ActionMailer::MailDeliveryJob instead of the removed ActionMailer::DeliveryJob.

Which config option replaces the removed config.active_support.use_sha1_digests?
There is no direct replacement; SHA-1 digests are no longer supported.

How do I silence the new #to_s deprecation warnings?
Set config.active_support.disable_to_s_conversion = true in your application config.

Releases In Branch 7.0

VersionRelease date
7.0.1028 Oct 2025
(7 months ago)
7.0.928 Oct 2025
(7 months ago)
7.0.8.710 Dec 2024
(1 year ago)
7.0.8.623 Oct 2024
(1 year ago)
7.0.8.515 Oct 2024
(1 year ago)
7.0.8.404 Jun 2024
(1 year ago)
7.0.8.317 May 2024
(2 years ago)
7.0.8.216 May 2024
(2 years ago)
7.0.8.121 Feb 2024
(2 years ago)
7.0.809 Sep 2023
(2 years ago)
7.0.7.222 Aug 2023
(2 years ago)
7.0.7.122 Aug 2023
(2 years ago)
7.0.709 Aug 2023
(2 years ago)
7.0.629 Jun 2023
(2 years ago)
7.0.5.126 Jun 2023
(2 years ago)
7.0.524 May 2023
(3 years ago)
7.0.4.313 Mar 2023
(3 years ago)
7.0.4.224 Jan 2023
(3 years ago)
7.0.4.117 Jan 2023
(3 years ago)
7.0.409 Sep 2022
(3 years ago)
7.0.3.112 Jul 2022
(3 years ago)
7.0.309 May 2022
(4 years ago)
7.0.2.426 Apr 2022
(4 years ago)
7.0.2.308 Mar 2022
(4 years ago)
7.0.2.211 Feb 2022
(4 years ago)
7.0.2.111 Feb 2022
(4 years ago)
7.0.208 Feb 2022
(4 years ago)
7.0.106 Jan 2022
(4 years ago)
7.0.015 Dec 2021
(4 years ago)
7.0.0.rc314 Dec 2021
(4 years ago)
7.0.0.rc214 Dec 2021
(4 years ago)
7.0.0.rc106 Dec 2021
(4 years ago)
7.0.0.alpha215 Sep 2021
(4 years ago)
7.0.0.alpha115 Sep 2021
(4 years ago)