Rails 7.2.0 Railties CHANGELOG(全項目リンク付き)
更新46件(うち非推奨削除4件)
Rails 7.2.0.rc1(2024/08/07)
🔗 Implement the bin/rails boot command by fxn · Pull Request #52480 · rails/rails
アプリケーションを起動して終了するbin/rails boot
コマンドが新たに導入された。このコマンドは標準の-e
/--environment
オプションをサポートする。
*Xavier Noria**
Rails 7.2.0.beta3(2024/07/11)
変更なし
Rails 7.2.0.beta2(2024/06/04)
変更なし
Rails 7.2.0.beta1(2024/05/29)
🔗 Make devcontainers opt in and create a devcontainer command by andrewn617 · Pull Request #51880 · rails/rails
- DevContainerジェネレータを作成
アプリケーションの現在の設定を元にdevcontainerをセットアップする。
使い方:
bin/rails devcontainer
Andrew Novoselac
🔗 Add rubocop and GitHub Actions to plugin generator by excid3 · Pull Request #51822 · rails/rails
- プラグインジェネレータにRuboCopとGitHub Actionsを追加
--skip-rubocop
や--skip-ci
でスキップ可能。
Chris Oliver
🔗 Clean up database generators implementation by andrewn617 · Pull Request #51765 · rails/rails
rails new
コマンドとrails db:system:change
コマンドから、oracle
、sqlserver
、JRuby固有のデータベースアダプタのサポートを削除
サポートされるオプションはsqlite3
、mysql
、postgresql
、trilogy
。
Andrew Novoselac
🔗 Turn app:update into a command to add --force by etiennebarrie · Pull Request #51690 · rails/rails
参考: 週刊Railsウォッチ20240513: bin/rails app:update
をRakeタスクからRailsコマンドに変更して--force
オプションを追加
bin/rails app:update
にオプションを追加
bin/rails app:update
コマンドで、ジェネレータと同じ以下の汎用オプションをサポートするようになった。
--force
: 既存ファイルへの変更をすべて受け入れる--skip
: 既存ファイルへの変更をすべて拒否する--pretend
: 追加・変更を行わない--quiet
: 変更ログをターミナルに出力しない
Étienne Barrié
🔗 Build Rails console on top of IRB's latest official APIs by st0012 · Pull Request #51705 · rails/rails
参考: 週刊Railsウォッチ20240513: Railsコンソールが最新のIRB APIに移行
- RailsコンソールコマンドとヘルパーをIRB v1.13の拡張APIで実装
これにより、Railsコンソールでhelper
、controller
、new_session
、app
がIRBヘルプメッセージのHelper methods
カテゴリに表示されるようになった。また、reload!
コマンドは新しいRails console
コマンドカテゴリに表示されるようになった。
この変更の前は、RailsコンソールのコマンドやヘルパーメソッドはIRBのプライベートコンポーネント経由で追加されていたため、ヘルプメッセージに表示されず、機能がとても見つけにくかった。
Stan Lo
🔗 (削除)Deprecate behaviour constant by gmcgibbon · Pull Request #45180 · rails/rails
- 非推奨化されていた
Rails::Generators::Testing::Behaviour
を削除。
Rafael Mendonça França
🔗 (削除)Move dbconsole logic to Active Record connection adapter. by gmcgibbon · Pull Request #46093 · rails/rails
- コンソールの非推奨化されていた
find_cmd_and_exec
ヘルパーを削除。
Rafael Mendonça França
🔗 (削除)Deprecate config.enable_dependency_loading · rails/rails@cbfe735
- 非推奨化されていた
Rails.config.enable_dependency_loading
を削除。
Rafael Mendonça França
🔗 (削除)Deprecate calling Rails.application.secrets
by p8 · Pull Request #48472 · rails/rails
- 非推奨化されていた
Rails.application.secrets
を削除。
Rafael Mendonça França
🔗 Add require: "debug/prelude"
after debug
's Gemfile entry by st0012 · Pull Request #51692 · rails/rails
- 生成されるGemfileで
debug
gem用のrequire: "debug/prelude"
が含められるようになったdebug
gemを直接require
すると自動的に有効になるため、デバッグセッションに入らなくてもオーバーヘッドとメモリ使用量が増える可能性が生じる。
代わりにBundlerでdebug/prelude
をrequire
することで、開発者はdebugger
やbinding.break
などのブレークポイントメソッドに引き続きアクセス可能になり、かつデバッガはブレークポイントに到達するまで有効にならなくなる。
Stan Lo
🔗 Conditionally skip test job in ci.yml by stevepolitodesign · Pull Request #51289 · rails/rails
- 新規アプリケーションで
--skip-test
オプションを指定した場合に、ci.ymlでのtest
ジョブ生成をスキップするよう修正
Steve Polito
🔗 Bump NODE_LTS_VERSION
to 20.11.1 by stevepolitodesign · Pull Request #51393 · rails/rails
- 新規アプリケーションで条件付きで生成される
.node-version
ファイルのバージョンを20.11.1に更新
Steve Polito
🔗 railties: configure sanitizer vendor in 7.1 defaults more robustly by flavorjones · Pull Request #51267 · rails/rails
- Rails 7.1でサニタイザのデフォルトベンダ設定を修正
アプリでrails-html-sanitizer gemがeager loadingされなかった場合、デフォルトのサニタイザがRails::HTML5::Sanitizer
になるはずが、最終的にRails::HTML4::Sanitizer
になってしまうことがあった。
Mike Dalessio, Rafael Mendonça França
参考: 週刊Railsウォッチ20240313後編: SprocketsからPropshaftに乗り換えたらサニタイザがHTML4版にフォールバックした(その後修正)
🔗 Set action_mailer.default_url_options
values in development
and test
by stevepolitodesign · Pull Request #51191 · rails/rails
参考: 週刊Railsウォッチ20240312: development/test環境でdefault_url_options
をデフォルトで設定するよう修正
- development環境とtest環境で
default_url_options
をデフォルトで設定するよう修正
このコミットより前は、新規Railsアプリケーションでメイラーに含まれるURLが*_path
ヘルパーでビルドされるとActionView::Template::Error
が発生することがあった。
Steve Polito
🔗 Introduce Rails::Generators::Testing::Assertions#assert_initializer
by stevepolitodesign · Pull Request #51176 · rails/rails
参考: 週刊Railsウォッチ20240312: assert_initializer
を追加
Rails::Generators::Testing::Assertions#assert_initializer
を導入
既存のinitializer
ジェネレータのアクションを補完する。
assert_initializer "mail_interceptors.rb"
Steve Polito
🔗 Generate devcontainer files by default by andrewn617 · Pull Request #50914 · rails/rails
参考: 週刊Railsウォッチ20240228: rails new
で.devcontainer用ファイルをセットアップするようになった
- 新規Railsアプリの作成時に.devcontainerフォルダとその内容を生成するようになった
この.devcontainerフォルダには、リモートコンテナ内でアプリを起動して開発するのに必要なものがすべて含まれる。
コンテナのセットアップには以下が含まれる。
- redisコンテナ(KredisやAction Cableなど向け)
- データベース(SQLite、PostgreSQL、MySQL、MariaDBのいずれか)
- ヘッドレスChromeコンテナ(システムテスト用)
- Active Storage(ローカルディスク利用設定済み、プレビュー機能も動く)
- アプリのセットアップでこれらのオプションのいずれかをスキップすると、コンテナのコンフィグに含まれなくなる。
--skip-devcontainer
オプションを指定することでファイルをスキップできる。
Andrew Novoselac & Rafael Mendonça França
- システムテストのアプリケーションサーバーを設定する
SystemTestCase#served_by
メソッドを導入
デフォルトではlocalhost
に設定される。このメソッドを使うことで、以下のようにホスト名とポートを手動で指定可能になる。
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
served_by host: "testserver", port: 45678
end
Andrew Novoselac & Rafael Mendonça França
🔗 Don't load *_test.rb
file from the "fixtures" folder: by Edouard-chin · Pull Request #51068 · rails/rails
bin/rails test
を実行したときに、*_test.rb
という名前のファイルがfixtures
フォルダにある場合は読み込まないようになった
Edouard Chin
🔗 Don't pop logger tags in Rails::Rack::Logger until request is finished by KJTsanaktsidis · Pull Request #50992 · rails/rails
config.log_tags
で設定したロガータグが、request.action_dispatch
ハンドラの処理中に無効にならないよう修正
KJ Tsanaktsidis
🔗 Setup jemalloc in default Dockerfile to optimize memory allocation by northeastprince · Pull Request #50943 · rails/rails
参考: 週刊Railsウォッチ20240221: RailsのDockerfileでjemallocがデフォルトで使われるようになった
- メモリ最適化のため、Dockerfileでjemallocをセットアップするようになった
Matt Almeida, Jean Boussier
🔗 Commented out lines in .railsrc file should not be treated as arguments by williantenfen · Pull Request #50904 · rails/rails
参考: 週刊Railsウォッチ20240221: .railsrcファイルのコメントアウトが効いていなかったのを修正
.railsrcファイル内でコメントアウトされた行は、rails new generator
コマンドで引数として扱うべきではない。#
以降のテキストを無視するようにARGVScrubber
を更新する。
Willian Tenfen
🔗 Skip CSS when creating APIs. by ruyrocha · Pull Request #50907 · rails/rails
参考: 週刊Railsウォッチ20240221: API生成時にCSSファイルを生成しないよう修正
- APIの生成時にCSSをスキップするようになった
Ruy Rocha
🔗 Update rails console prompt by st0012 · Pull Request #50825 · rails/rails
- RailsコンソールのプロンプトにRailsの現在の環境名を表示するようになった
my-app(dev)> # RAILS_ENV=developmentの場合
my-app(test)> # RAILS_ENV=testの場合
my-app(prod)> # RAILS_ENV=productionの場合
my-app(my_env)> # RAILS_ENV=my_envの場合
なお、このアプリケーション名はconfig/application.rb
のアプリケーションモジュール名から導出される。たとえば、MyApp
はプロンプトでmy-app
と表示される。
さらに、ターミナルでサポートされている場合は、環境名が development
(青)、test
(青)、production
(赤)でそれぞれ表示される。
Stan Lo
🔗 Ensure only directories exist in Rails default load paths by aeroastro · Pull Request #50723 · rails/rails
参考: 週刊Railsウォッチ20240215: デフォルトの読み込みパスにファイルが含まれないよう修正
- Railsエンジンでの初期化で、以下の読み込みパスにディレクトリ以外のものが含まれないよう修正
autoload_paths
autoload_once_paths
eager_load_paths
load_paths
修正前は、app
ディレクトリ以下のファイルが含まれてしまうことがあった。
Takumasa Ochi
🔗 Prevent unnecessary application reloads in development by aeroastro · Pull Request #50708 · rails/rails
参考: 週刊Railsウォッチ20240206: オートロードパスにないファイルの再読み込みをdevelopment環境で防止するよう修正
- developmentモードでアプリケーションを不必要に再読み込みしないよう修正
従来は、オートロードパスの外にある一部のファイルによって不要な再読み込みがトリガーされていた。この修正によって、アプリケーションがRails.autoloaders.main.dirs
に沿って再読み込みされるようになり、不要な再読み込みを防止する。
Takumasa Ochi
🔗 Add oven-sh/setup-bun
to GitHub CI when generating an app with bun by tangrufus · Pull Request #50636 · rails/rails
参考: 週刊Railsウォッチ20240206: bunを使うアプリがGitHub CIでbunをセットアップするよう修正
- bunを有効にして生成したアプリが、GitHub CIで
oven-sh/setup-bun
を使うよう修正
TangRufus
🔗 Do not generate pidfile in production environments by hschne · Pull Request #50644 · rails/rails
参考: 週刊Railsウォッチ20240206: production環境ではserver.pidファイルを生成しないようになった
- production環境でPIDファイルを生成しないようになった
Hans Schnedlitz
🔗 refactor: default annotate_rendered_view_with_filenames to true in development by adrianthedev · Pull Request #50436 · rails/rails
- development環境では
config.action_view.annotate_rendered_view_with_filenames
をtrue
に設定するようになった
Adrian Marin
参考: §3.11.16 config.action_view.annotate_rendered_view_with_filenames
-- Rails アプリケーションの設定項目 - Railsガイド
🔗 Add BACKTRACE
env variable to turn off backtrace by ghiculescu · Pull Request #50563 · rails/rails
- バックトレースのクリーニングを無効にする
BACKTRACE
環境変数をサポート
これは以下のようにフレームワークのコードをデバッグするときに有用。
BACKTRACE=1 bin/rails server
Alex Ghiculescu
🔗 Raise ArgumentError
when reading from config.x
with arguments by seanpdoyle · Pull Request #50050 · rails/rails
- 以下のようにコンフィグ値の読み取りで引数が渡されたら、
ArgumentError
扱いするようになった
config.x.this_works.this_raises true # ArgumentErrorになる
Sean Doyle
🔗 Add default pwa manifest and service worker file by dhh · Pull Request #50528 · rails/rails
参考: 週刊Railsウォッチ20240123: PWA用のマニフェストファイルとサービスワーカーファイルをデフォルトで追加する
app/views/pwa
から配信され、ERBで動的にレンダリング可能なマニフェストとサービスワーカー用のデフォルトPWAファイルを追加する
生成されるルーティングファイル内のデフォルトルーティングを用いて、これらのファイルを明示的にrootにマウントする。
DHH
🔗 Switch to headless chrome by default by dhh · Pull Request #50512 · rails/rails
- 新規アプリケーションのシステムテストでヘッドレスChromeをデフォルトで利用するよう更新
DHH
🔗 Default to creating GitHub CI files by dhh · Pull Request #50508 · rails/rails
参考: 週刊Railsウォッチ20240123: GitHub CI向けの設定ファイルをデフォルトで追加するようになった
- dependabot、brakeman、rubocop、およびテスト実行用のGitHub CIファイルを追加する
--skip-ci
を指定することでスキップ可能。
DHH
🔗 Add Brakeman by default to new apps by vipulnsward · Pull Request #50507 · rails/rails
- brakeman(セキュリティ脆弱性の静的解析用gem)がデフォルトで追加されるようになった
--skip-brakeman option
オプションでスキップ可能。
vipulnsward
🔗 Add rubocop-rails-omakase to new Rails applications by zzak · Pull Request #50486 · rails/rails
rubocop-rails-omakase
gemを用いてRuboCopルールがデフォルトで追加されるようになった
--skip-rubocop
でスキップ可能。
DHH and zzak
🔗 Add runner script option to disable Executor wrap by bensheldon · Pull Request #50223 · rails/rails
参考: 週刊Railsウォッチ20240117: Railsのランナーに--skip-executor
オプションが追加された
bin/rails runner
で--skip-executor
オプションを指定することで、ランナースクリプトをExecutorでラップせずに実行可能になった
Ben Sheldon
🔗 Make isolated engines aware of ActiveRecord::Base table name prefix by chaadow · Pull Request #50247 · rails/rails
参考: 週刊Railsウォッチ20231222: Rails::Engine
のisolate_namespace
メソッドを修正
注: これはRails 7.1.3でリリース済みです。
- 分離したエンジンに
ActiveRecord::Base.table_name_prefix
コンフィグが反映されるよう修正
これにより、エンジンが定義するモデル(Active Storageなど)がActive Recordのテーブル名プレフィックスを尊重するようになる。
Chedli Bourguiba
🔗 Fix running db:system:change
with no Dockerfile by skipkayhil · Pull Request #49988 · rails/rails
注: これはRails 7.1.2でリリース済みです。
- アプリにDockerfileがない場合に
db:system:change
を実行するとエラーになる問題を修正。
Hartley McGuire
🔗 Ignore inline attachments and show attached emails in attachment list by c960657 · Pull Request #49828 · rails/rails
参考: 週刊Railsウォッチ20231122: Action Mailerのプレビューでインライン添付ファイルを別表示にした
- Action Mailerのプレビューで、インライン添付ファイルを通常の添付ファイルと分けて表示するようになった。
例:
Attachments: logo.png file1.pdf file2.pdf
上は以下のように表示される。
Attachments: file1.pdf file2.pdf (Inline: logo.png)
Christian Schmidt and Jonathan Hefner
🔗 Only show SMTP envelope recipient when relevant by c960657 · Pull Request #48782 · rails/rails
参考: 週刊Railsウォッチ20231122: SMTP-To:
を必要な場合にのみ表示するよう修正
- Action Mailerのプレビューで、
To
とCc
とBcc
の和集合と一致しない場合にのみSMTP-To:
を表示するようになった
Christian Schmidt
🔗 Enable YJIT by default if running Ruby 3.3+ by byroot · Pull Request #49947 · rails/rails
参考: 週刊Railsウォッチ20231122: Ruby 3.3以上でRailsアプリを実行するとYJITがデフォルトで有効になる
- Ruby 3.3以上で実行される新規アプリケーションでYJITがデフォルトで有効になる
追加されるconfig/initializers/enable_yjit.rb
イニシャライザは、Ruby 3.3以上で実行される場合にYJITを有効にする。
Jean Boussier
🔗 ActionMailer Email Preview - show date header when present by sampatbadhe · Pull Request #49790 · rails/rails
参考: 週刊Railsウォッチ20231122: メールにDate
ヘッダーが存在する場合はAction Mailerのプレビューで日付を表示
- Action Mailerのプレビューで、メッセージのDateヘッダーが存在する場合は日付を表示するようになった
Sampat Badhe
🔗 Non-zero exit status on migration file creation errors by kyoshidajp · Pull Request #49644 · rails/rails
参考: 週刊Railsウォッチ20231114: マイグレーションファイル作成に失敗したら0以外のステータスを返すよう修正
- マイグレーションファイル作成に失敗したら0以外のステータスを返すよう修正
Katsuhiko YOSHIDA
🔗 Make Dockerfile template compatible with Kubernetes rootless pods by ivanfed0t0v · Pull Request #49742 · rails/rails
参考: 週刊Railsウォッチ20231114: rails new
で生成されるDockerfileがKubernetesでエラーになる問題を修正
- DockerfileテンプレートないのUIDとGIDを数値形式に変更
rails new
で生成されるDockerfileでは、デフォルトのユーザー名とグループ名をUID:GID
ではなく名前で設定していた。このため、Kubernetesで以下のエラーが発生することがあった。
container has runAsNonRoot and image has non-numeric user (rails), cannot verify user is non-root
この変更によって、ユーザーとグループが数値で設定されるようになる。
Ivan Fedotov
🔗 Use Thor's enum for class_options by p8 · Pull Request #49609 · rails/rails
rails new
のオプションに無効な値を渡せないよう修正
rails new
の--database
オプション、--asset-pipeline
オプション、--css
オプション、--javascript
オプションに渡す引数はそれぞれ異なる。この修正はそれらの引数をバリデーションする。
Tony Drake, Akhil G Krishnan, Petrik de Heus
参考: 週刊Railsウォッチ20231024前編: rails new
の--database
オプションなどに誤った値を渡すと通知するようになった
🔗 Conditionally print $stdout
when invoking run_generator
by stevepolitodesign · Pull Request #49448 · rails/rails
run_generator
が呼び出された場合に$stdout
に出力するかどうかを指定可能になった
ジェネレータテストをデバッグしやすくするため、$stdout
をキャプチャする代わりに条件付きで出力する機能を追加した。
これにより、binding.irb
やputs
の呼び出しが期待通りに動作する。
RAILS_LOG_TO_STDOUT=true ./bin/test test/generators/actions_test.rb
Steve Polito
🔗 Remove config.public_file_server.enabled
from environment templates by Adrian-Hirt · Pull Request #49851 · rails/rails
- すべての環境でジェネレータの
config.public_file_server.enabled
オプションを削除するようになった
この値はどの環境でも同じであるため。
Adrian Hirt
以前の変更については7-1-stableのChangelogを参照。
概要
MITライセンスに基づいて翻訳・公開いたします。
なお、機能削除のエントリについては、原則として7.2での削除プルリクではなく、その機能が非推奨化されたときの過去のプルリクへリンクしています。