なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2022/08/03)

2022/08/03分のコミットです。

CHANGELOGへの追加はありませんでした。


Merge pull request #45716 from jonathanhefner/command-executable-helper

railtiesの修正です。

コマンド名を表示する為のヘルパーメソッドを追加し、各コマンドのUSAGEやエラーメッセージでそのメソッドを使うよう修正しています。


Raise when defining an enum not backed by a database column

activerecord/lib/active_record/enum.rbactiverecord/lib/active_record/model_schema.rbの修正です。

schemaに定義されているenumがDBに存在しない場合、schemaファイルロード時にエラーとなるよう修正しています。


Avoid explictly freezing literals strings when possible

actionview/lib/action_view/template/handlers/erb/erubi.rbの修正です。

templateのコンパイル時に明示的なfreezing literals stringsの使用を避けるよう修正しています。template自体にfrozen_string_literals: trueが指定されている場合に、明示的なstringのfreeze処理は無駄になってしまう為。

参考: Add freeze_template_literals option to avoid String#freeze


Preserve collaction when changing column in MySQL

activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。

MySQLでcolumnの変更処理でcollationの指定が失われてしまっていたのを維持するよう修正しています。


Refactor form_for tests to stop re-assigning @output_buffer

Action Viewのテストの修正です。

テストで値を設定するのに@output_bufferを使用していたのを、@rendererを使用するよう修正しています。@rendererがそもそもDOMのテスト用に準備された変数の為。


Add OutputBuffer#raw and #capture to reduce the need to swap the buffer

Action Pack、Action Viewの修正です。

OutputBuffer classにraw、及び、captureメソッドを追加しています。

元々、view helperのcapture処理は各helperで独自で実装が行われていました。これは@output_bufferを新しいbufferにswapするよう実装されており、swap後は元のbufferのsizeを保持する為に、新しいbufferを明示的にそのsizeにsliceするなどの処理が含まれており、少々無駄がありました。そこで、処理の共通化、及び無駄を無くす為にOutputBuffercaptureメソッドを追加しています。また、captureメソッドはhtml safeな値を返すようになっているのですが、html safeじゃない値が取得したい時の為、rawデータを取得する為のrawメソッドも合わせて追加しています。


Add missing Versioning header in maintenance policy guide

rails guideのMaintenance Policy for Ruby on Railsの修正です。

versioningについて説明してる箇所に、Versioningヘッダーを追加しています。


Refactor Action View tests to stop re-assigning @output_buffer

Action Viewの修正です。

テストで値を設定するのに@output_bufferを使用していたのを@rendererを使用するよう修正しています。Refactor form_for tests to stop re-assigning @output_bufferの続き。