Rails 8.0.3 (September 22, 2025)¶ ↑
-
Fix
polymorphic_urlandpolymorphic_pathnot working when routes are not loaded.Édouard Chin
-
Fix
Railsconsole to not override user defined IRB_NAME.Only change the prompt name if it hasn't been customized in
.irbrc.Jarrett Lusso
Rails 8.0.2.1 (August 13, 2025)¶ ↑
-
No changes.
Rails 8.0.2 (March 12, 2025)¶ ↑
-
Fix
Railsconsole to load routes.Otherwise
*_pathand*urlmethods are missing on theappobject.Édouard Chin
-
Update
rails new --minimaloptionExtend the
--minimalflag to exclude recently added features:skip_brakeman,skip_ci,skip_docker,skip_kamal,skip_rubocop,skip_solidandskip_thruster.eelcoj
-
Use
secret_key_basefrom ENV or credentials when present locally.When ENV or
Rails.application.credentials.secret_key_baseis set for test or development, it is used for theRails.config.secret_key_base, instead of generating atmp/local_secret.txtfile.Petrik de Heus
Rails 8.0.1 (December 13, 2024)¶ ↑
-
Skip generation system tests related code for CI when
--skip-system-testis given.fatkodima
-
Don’t add bin/thrust if thruster is not in Gemfile.
Étienne Barrié
-
Don't install a package for system test when applications don't use it.
y-yagi
Rails 8.0.0.1 (December 10, 2024)¶ ↑
-
No changes.
Rails 8.0.0 (November 07, 2024)¶ ↑
-
No changes.
Rails 8.0.0.rc2 (October 30, 2024)¶ ↑
-
Fix incorrect database.yml with
skip_solid.Joé Dupuis
-
Set
Regexp.timeoutto1s by default to improve security overRegexpDenial-of-Service attacks.Rafael Mendonça França
Rails 8.0.0.rc1 (October 19, 2024)¶ ↑
-
Remove deprecated support to extend
Railsconsole throughRails::ConsoleMethods.Rafael Mendonça França
-
Remove deprecated file
rails/console/helpers.Rafael Mendonça França
-
Remove deprecated file
rails/console/app.Rafael Mendonça França
-
Remove deprecated
config.read_encrypted_secrets.Rafael Mendonça França
-
Add Kamal support for devcontainers
Previously generated devcontainer could not use docker and therefore Kamal.
Joé Dupuis
Rails 8.0.0.beta1 (September 26, 2024)¶ ↑
-
Exit
rails gwith code 1 if generator could not be found.Previously
rails greturned 0, which would make it harder to catch typos in scripts callingrails g.Christopher Özbek
-
Remove
require_*statements from application.css to align with the transition from Sprockets to Propshaft.With Propshaft as the default asset pipeline in
Rails8, the require_tree and require_self clauses in application.css are no longer necessary, as they were specific to Sprockets. Additionally, the comment has been updated to clarify that CSS precedence now follows standard cascading order without automatic prioritization by the asset pipeline.Eduardo Alencar
-
Do not include redis by default in generated Dev Containers.
Now that applications use the Solid Queue and Solid Cache gems by default, we do not need to include redis in the Dev Container. We will only include redis if
--skip-solidis used when generating an app that uses Active Job or Action Cable.When generating a Dev Container for an existing app, we will not include redis if either of the solid gems are in use.
Andrew Novoselac
-
Use Solid Cable as the default Action Cable adapter in production, configured as a separate queue database in config/database.yml. It keeps messages in a table and continuously polls for updates. This makes it possible to drop the common dependency on Redis, if it isn't needed for any other purpose. Despite polling, the performance of Solid Cable is comparable to Redis in most situations. And in all circumstances, it makes it easier to deploy
Railswhen Redis is no longer a required dependency for Action Cable functionality.DHH
-
Use Solid Queue as the default Active Job backend in production, configured as a separate queue database in config/database.yml. In a single-server deployment, it'll run as a Puma plugin. This is configured in
config/deploy.ymland can easily be changed to use a dedicated jobs machine.DHH
-
Use Solid Cache as the default
Rails.cachebackend in production, configured as a separate cache database in config/database.yml.DHH
-
Add
Rails::Rack::SilenceRequestmiddleware and use it viaconfig.silence_healthcheck_path = pathto silence requests to “/up”. This prevents the Kamal-required health checks from clogging up the production logs.DHH
-
Introduce
mariadb-mysqlandmariadb-trilogydatabase options forrails newWhen used with the
--devcontainerflag, these options will usemariadbas the database for the Dev Container. The originalmysqlandtrilogyoptions will usemysql. Users who are not generating a Dev Container do not need to use the new options.Andrew Novoselac
-
Deprecate
::STATS_DIRECTORIES.The global constant
STATS_DIRECTORIEShas been deprecated in favor ofRails::CodeStatistics.register_directory.Add extra directories with
Rails::CodeStatistics.register_directory(label, path):require "rails/code_statistics" Rails::CodeStatistics.register_directory('My Directory', 'path/to/dir')
Petrik de Heus
-
Enable query log tags by default on development env
This can be used to trace troublesome SQL statements back to the application code that generated these statements. It is also useful when using multiple databases because the query logs can identify which database is being used.
Matheus Richard
-
Defer route drawing to the first request, or when url_helpers are called
Executes the first routes reload in middleware, or when a route set's url_helpers receives a route call / asked if it responds to a route. Previously, this was executed unconditionally on boot, which can slow down boot time unnecessarily for larger apps with lots of routes.
Environments like production that have
config.eager_load = truewill continue to eagerly load routes on boot.Gannon McGibbon
-
Generate form helpers to use
textarea*methods instead oftext_area*methodsSean Doyle
-
Add authentication generator to give a basic start to an authentication system using database-tracked sessions and password reset.
Generate with...
bin/rails generate authentication
Generated files:
app/models/current.rb app/models/user.rb app/models/session.rb app/controllers/sessions_controller.rb app/controllers/passwords_controller.rb app/mailers/passwords_mailer.rb app/views/sessions/new.html.erb app/views/passwords/new.html.erb app/views/passwords/edit.html.erb app/views/passwords_mailer/reset.html.erb app/views/passwords_mailer/reset.text.erb db/migrate/xxxxxxx_create_users.rb db/migrate/xxxxxxx_create_sessions.rb test/mailers/previews/passwords_mailer_preview.rb
DHH
-
Add not-null type modifier to migration attributes.
Generating with...
bin/rails generate migration CreateUsers email_address:string!:uniq password_digest:string!
Produces:
class CreateUsers < ActiveRecord::Migration[8.0] def change create_table :users do |t| t.string :email_address, null: false t.string :password_digest, null: false t.timestamps end add_index :users, :email_address, unique: true end end
DHH
-
Add a
scriptfolder to applications, and a scripts generator.The new
scriptfolder is meant to hold one-off or general purpose scripts, such as data migration scripts, cleanup scripts, etc.A new script generator allows you to create such scripts:
bin/rails generate script my_script bin/rails generate script data/backfill
You can run the generated script using:
bundle exec ruby script/my_script.rb bundle exec ruby script/data/backfill.rb
Jerome Dalbert, Haroon Ahmed
-
Deprecate
bin/rake statsin favor ofbin/rails stats.Juan Vásquez
-
Add internal page
/rails/info/notes, that displays the same information asbin/rails notes.Deepak Mahakale
-
Add Rubocop and GitHub Actions to plugin generator. This can be skipped using –skip-rubocop and –skip-ci.
Chris Oliver
-
Use Kamal for deployment by default, which includes generating a Rails-specific config/deploy.yml. This can be skipped using --skip-kamal. See more: kamal-deploy.org/
DHH
Please check 7-2-stable for previous changes.