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で
debuggem用のrequire: "debug/prelude"が含められるようになったdebuggemを直接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_pathsautoload_once_pathseager_load_pathsload_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-omakasegemを用いて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での削除プルリクではなく、その機能が非推奨化されたときの過去のプルリクへリンクしています。