これはなに
Railsコミッタたちが連載しているThis week in Railsの内容を、簡単な補足と併せて紹介する連載です。社内slackで毎週書いていたものですが、連載力の持ち腐れな気がしてきたので公開することにしました。
引用元
今週のトピック
(弊社(https://foodison.jp/) では主にMySQLを使っているのもあり一部記事を省略しています)
DockerfileテンプレートをKubernetesのルートレスポッドに対応させる
railsの新規実行時に生成されるDockerfileがKubernetesのrootless podsで動作するようになった。
"has_one_attached "と "has_many_attached "でサービスをProcとして受け入れる
サービスを呼び出し可能なProcとして指定できるようになり、Active Storageで特殊なattachmentの関連付けをより柔軟に行えるようになった。
class User < ActiveRecord::Base
has_one_attached :avatar, service: ->(user) do user.in_europe_region?s3_europe : :s3_usa end
end
attr_internal_defineの簡素化
Module.attr_internal_naming_format=の内部を最適化し、与えられたフォーマットから"@"プレフィックスを除去する。このメソッドに"@"プレフィックスを指定すると、非推奨の警告が表示される。
マイグレーションファイルの作成エラー時の終了ステータスが0でなくなった
マイグレーションファイルの作成にエラーがある場合、終了ステータスは0になっていたがこれを修正
これが
% bin/rails generate migration ChangeFieldToUsers
invoke active_record
conflict db/migrate/20231015071420_change_field_to_users.rb
Another migration is already named change_field_to_users: /path/to/rails/db/migrate/20231015020422_change_field_to_users.rb. Use --force to replace this migration or --skip to ignore conflicted file.
% echo $?
0
こうなった
def self.exit_on_failure? # :nodoc:
true
end
SprocketsでTrixを使用する際の修正
Action Textが更新され、最新リリースのTrix v2.0.7が含まれるようになり、ライブラリをSprocketsで使用しようとした際の問題が修正された
変更をアサートする際のエラーメッセージの改善
minitestで提供されているassert_changes および assert_no_changes のエラーメッセージに .inspect を使用したオブジェクトが表示されるようになり、nil と空の文字列、文字列とシンボルなどの区別が容易になった