なるようになるブログ

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

rails commit log流し読み(2018/01/09)

2018/01/09分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

actionpack/CHANGELOG.md

activestorage/CHANGELOG.md


Merge pull request #31650 from rosa/master

activestorage/app/models/active_storage/blob.rbの修正です。

Blob#service_urlでURLを生成する際に、filenameをメソッドの引数で指定出来るよう修正しています。


Fix attaching blobs to optimistically-locked records

activestorage/lib/active_storage/attached/macros.rbの修正です。

attachment用のassociationを宣言する際に、inverse_ofオプションを指定するよう修正しています。

同一のインスタンスを参照出来るようにしておかないと、optimistic lockを使用しているmodelでのsave処理実行時にエラーになってしまう事がある為。


Work around Firefox's refusal to dispatch events on disabled elements. Fixes #31393

activestorage/app/javascript/activestorage/helpers.jsの修正です。

element.dispatchEventを実行する際に、try句で囲むようにし、element.dispatchEventでエラーがおきても処理を継続するよう修正しています。

disabled elementsに対してdispatchEventメソッドを呼び出すとエラーになる、というバグ(?)がFirefoxにあり、その為のワークアラウンドとの事です。

参考:329509 - Do not prevent event dispatching even if there is no prescontext or (form) element is disabled


Rebuild activestorage.js

activestorage/app/assets/javascripts/activestorage.jsの修正です。

activestorage.jsの再生成を行っています。先に行ったFirefox向けの修正を入れたJSを作成する為。


Add 'Referrer-Policy' header to default headers set

actionpack/lib/action_dispatch/railtie.rbの修正です。

デフォルトで設定するheaderにReferrer-Policy(値はstrict-origin-when-cross-origin)を追加しています。


Change Active Storage destroy callbacks

activestorage/lib/active_storage/attached/macros.rbの修正です。

attachmentsをpurgeする際、purge_laterメソッドを呼び出すのにbefore_destroy callbackを使用していたのを、after_destroy_commit callbackを使用するよう修正しています。

before_destroyだと、ユーザがmodelに処理をabortするcallback(e.g. before_destroy { throw(:abort) })をmodelに定義していた場合に、attachmentは削除されないがblobは削除される、という状態になってしまう為、それを避ける為にafter_destroy_commitを使用するようにしています。