なるようになるブログ

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

rails commit log流し読み(2020/03/20)

2020/03/20分のコミットです。

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

actiontext/CHANGELOG.md

activerecord/CHANGELOG.md

activejob/CHANGELOG.md

activesupport/CHANGELOG.md


Fix possible XSS vector in JS escape helper

actionview/lib/action_view/helpers/javascript_helper.rbの修正です。

escape_javascriptメソッドでドル記号($)とバッククォート("")もエスケープするよう修正しています。

escape_javascriptした値をそのまま変数に代入するような場合(下記のような場合)にXSSが出来てしまう可能性がある為。

<script>let a = `<%= escape_javascript unknown_input %>`</script>

参考: [CVE-2020-5267] Possible XSS vulnerability in ActionView


Remove extra loop in view_assigns (#38766)

actionpack/lib/abstract_controller/rendering.rbの修正です。

view_assignsメソッドのループ処理を減らすようリファクタリングしています。


Use array subtraction to compute variables of interest in view_assigns

actionpack/lib/abstract_controller/rendering.rbの修正です。

view_assignsメソッドでprocted varかどうかのチェックをループ内で行わないようリファクタリングしています。


Merge pull request #37951 from t0yohei/add-missing-action-to-action-text

actiontext/lib/action_text/attribute.rbの修正です。

text contentが存在するかのチェックを、content name + ?で行えるよう対応しています。


Handle db:rollback and db:rollback:[NAME] for multi-db apps

activerecord/lib/active_record/railties/databases.rakeの修正です。

db:rollbackで複数DB向けのtask(db:rollback:[NAME])を追加するよう修正しています。

今後、複数DBを使用しているアプリケーションでは上記taskを使用する事が推奨されており、複数DBでDBの指定無しのdb:rollbackを使用するとexceptionがraiseされるようになっています。


Merge pull request #38749 from etiennebarrie/perform_enqueued_jobs_only_once

activejob/lib/active_job/test_helper.rbの修正です。

perform_enqueued_jobsメソッドをblock指定せずに実行した場合に、実行したjobをqueueから削除するよう修正しています。

perform_later + perform_enqueued_jobsを複数回実行する場合に、先に実行したjobが再度実行されてしまうのを防ぐ為。


fix StiAutoloading example code

rails guideのAutoloading and Reloading Constants (Zeitwerk Mode)の修正です。

Single Table Inheritanceの項にあるSTIをpreloadするexampleコードで、カラム名を取得する処理でunscopedを指定するよう修正しています。取得処理に使用するクラスでdefaul scopeが指定されている場合にエラーになってしまう可能性がある為。


Add Date and Time #yesterday? and #tomorrow? (#37625)

activesupport/lib/active_support/core_ext/date_and_time/calculations.rbの修正です。

オブジェクトの時間が明日 / 昨日かをチェックするためのtomorrow? / yesterday?メソッドを追加しています。合わせて、それらのaliasとしてnext_day? / prev_day?メソッドも