なるようになるブログ

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

rails commit log流し読み(2018/05/30)

2018/05/30分のコミットです。

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


Remove unused require "active_support/file_update_checker"

activesupport/lib/active_support/i18n_railtie.rbの修正です。

不要なactive_support/file_update_checkerのrequireを削除しています。


Allow Time.zone.at to receive a second argument

activesupport/lib/active_support/values/time_zone.rbの修正です。

ActiveSupport::TimeZone#atが引数を一つして受け取れないようになっていたのを、複数の引数を渡せるよう修正しています。

RubyTime#atでは第二引数にsub-second precisionを渡せるようになっており、それと挙動を合わせる為。


Merge pull request #32998 from gregmolnar/protect-from-application-javascript

actionpack/lib/action_controller/metal/request_forgery_protection.rbの修正です。

ActionController::RequestForgeryProtection#non_xhr_javascript_response?メソッドでresponseがJavaScriptかどうかをチェックする処理で、content typeがtext/javascriptの場合のみJavaScriptだと判定していたのを、application/javascriptJavaScript とみなすよう修正しています。

rails commit log流し読み(2018/05/29)

2018/05/29分のコミットです。

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

activerecord/CHANGELOG.md


Hide Active Storage migration installation task (#33007)

activestorage/lib/tasks/activestorage.rakeの修正です。

active_storage:install:migrations タスクがタスク一覧に表示されないよう修正しています。

active_storage:installタスクが別に提供されており、active_storage::install:migrationsを直接実行する必要は無い為。


Ensure casting by boolean attribute when querying

activemodel/lib/active_model/type/boolean.rbの修正です。

query実行時にboolean attributeのcast処理が必ず行われるよう修正しています。

Properly cast input in update_allで対応されたのですが、対応が不十分でadapterによって挙動が違う(PostgreSQLだとwhereにStringのtrueを指定しても動作するが、MySQLだとエラーになる)という状態になってしまっていたのを、全てのadapterで正しく動作するようにしています。


Verify integrity after chunked download

Active Storageの修正です。

blobをchunked downloadした後に、チェックサムの値を確認し、downloadしたファイルが正しいかどうかチェックするよう修正しています。


Fix reference

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

verify_integrity_ofメソッドでレシーバーの指定が不足していた箇所があったのを修正しています。


Merge pull request #32952 from mechanicles/32940-fix

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

autosave associationで、child associationが複数ある、かつ、一部だけでvalidationエラーが発生している場合に親レコードのsave処理が正常に完了してしまっていたのを、エラーになるよう修正しています。


Fix name of the second parameter of block executed by discard_on and retry_on

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

retry_on、及び、discard_onにブロックを渡した場合のexampleで、ブロックに渡される値を保持する変数名をexceptionからerrorに修正しています。

渡される値がException classではなくerrorのインスタンスの為。

rails commit log流し読み(2018/05/28)

2018/05/28分のコミットです。

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


Parse raw value only when a value came from user in numericality validator

activemodel/lib/active_model/validations/numericality.rbの修正です。

PostgreSQLでmoney typeを使用している、かつ、money typeを使用しているattributeにnumericality validationを使用している場合に、保存したデータをロード後validationエラーになってしまうバグがあったのを修正しています。

DBに保存されている値を誤ってraw valueに変換してしまっていたのを、ユーザが入力した値のみraw valueに変換するようにして対応しています。


Remove unnecessary with_default_enforce_utf8 method

actionview/test/template/form_helper/form_with_test.rbの修正です。

不要なテスト用のヘルパーメソッドを削除しています。同じ内容のメソッドが親クラスで定義されている為。


Update et-orbi to latest version

Gemfile.lockの修正です。

et-orbi gemを最新のバージョンに更新しています。Rubyのwarningが表示されるのを避ける為。


Fix actionable test's assertion

actioncable/test/channel/stream_test.rbの修正です。

subscription confirmationが一回だけ送信されることを確認するテストで、mockを使用して、transmitメソッドが正しく呼ばれることを確認するよう修正しています。


Fix: Arel Postgresql visitor generates invalid SQL for GROUPING SETS.

activerecord/lib/arel/visitors/postgresql.rbの修正です。

GROUPING SETS式をGROUPING SETにタイポしていたのを修正しています。

参考:GROUPING SETS, CUBE, and ROLLUP


Fix sentence [ci skip]

activerecord/lib/active_record/callbacks.rbのdocの修正です。

ActiveRecord::Callbacks moduleのdoc内のグラマーを修正しています。

rails commit log流し読み(2018/05/27)

2018/05/27分のコミットです。

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


Fix belongs_to_counter_cache_after_update to respect polymorphic type change

Active Recordの修正です。

polymorphic association + counter cacheを使用している場合に、polymorphicのtypeを変更した場合にcounter cacheの更新が正しく行われないバグがあったのを修正しています。


Fix inconsistent touching behavior between assigning and unassigning

activerecord/lib/active_record/associations/belongs_to_association.rbactiverecord/lib/active_record/associations/builder/belongs_to.rbの修正です。

belongs_to associationにtouchオプションを指定している、かつ、associationのオブジェクトを変更した場合に、変更元のオブジェクトはtouchされて変更後のオブジェクトをはtouchされない、という挙動になっていたのを、どちらもtouch処理が行われるよう修正しています。


Fix that association's after_touch is not called with counter cache

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

counter cacheを使用している場合に、associationのafter_touch callbackが実行されないバグがあったのを修正しています。

rails commit log流し読み(2018/05/26)

2018/05/26分のコミットです。

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


Fix different_target? to respect custom primary key counter

activerecord/lib/active_record/associations/belongs_to_association.rbの修正です。

BelongsToAssociation#different_target?メソッドでrecordが変更されているかどうかをチェックする際、id attribute決め打ちで値を見ていたのを、primary_keyに指定されているattributeの値を確認するよう修正しています。


Fix belongs_to_counter_cache_after_update to respect custom primary key counter

activerecord/lib/active_record/associations/builder/belongs_to.rbの修正です。

belongs_to associationsでprimary keyオプションが指定されていた場合に、counter_cacheの更新後のcallback処理で誤ったオブジェクトを参照してしまっていたのを、primary keyに指定されたattributeを使用して正しいオブジェクトを参照するよう修正しています。


Avoid a subquery in updating counter cache

activerecord/lib/active_record/associations/builder/belongs_to.rbactiverecord/lib/active_record/counter_cache.rbの修正です。

先の修正の影響でcounter cacheの更新の際にsubqueryが使われるようになってしまっていたのを修正しています。MySQLだとUPDATE + subqueryは動作しない為。

rails commit log流し読み(2018/05/25)

2018/05/25分のコミットです。

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


update README link: md instead rdoc [ci skip]

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

correct link to activejob readme [ci skip]で対応したREADMEへのリンクが誤っていたのを修正しています。


Update stale issue comment to mention 5-2-stable

.github/stale.ymlの修正です。

stable botが記載するコメントで、エラーが再現するか確認するブランチが5-1-stableになっていたのを、5-2-stableに更新しています。


Improve grammar for DateAndTime before? and after? calculations [ci skip]

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

DateAndTime#before?#after?メソッドのdocのグラマーを修正しています。


Make force equality checking more strictly not to allow serialized attribute

Active Recordの修正です。

predicateを生成する為の型チェックをより厳密に行うよう修正しています。

where by array|range attribute with array or range valuefindcreateで一環したpredidateを生成する為に追加されたチェックだったのですが、その際、array/range attributeはsubtypeがある、という前提の実装になっていました。

が、serializeを使っている場合、subtypeが無いケースがあり、その場合値のハンドリングが正しく行えていなかった為、チェック処理を修正しています。


Eager loading won't mutate owner record

activerecord/lib/active_record/associations/association.rbactiverecord/lib/active_record/associations/belongs_to_association.rbの修正です。

belongs_to associationを使用している、かつ、associationをeager loadした際に、owner record自身の外部キーの値が変更されてしまうケースがあったのを、変更しないよう修正しています。

rails commit log流し読み(2018/05/24)

2018/05/24分のコミットです。

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

actionmailer/CHANGELOG.md


Merge pull request #32882 from utilum/unnecessary_mocking

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

mockしないで良い箇所までmockを使ってしまっていたのを修正しています。


Change video preview format from PNG to JPG

activestorage/lib/active_storage/previewer/video_previewer.rbの修正です。

video previewで表示する画像をPNGからJPGに変更しています。

JPGの方がファイルサイズが小さい為。


Eager autoload mail gem when eager load is true (#32808)

actionmailer/lib/action_mailer.rbの修正です。

eager loadがtrueの場合、mail gemをeager autoloadするよう修正しています。

元々はaction_mailer/base.rbで普通にrequireしていたのですが、それだとmail gemの読み込み時にSidekiq worker threadがdeadlockしてしまうケースがあった為、eager loadするよう修正しています。


Enable warnings in all test tasks

テスト実行時にRubyのワーニングが表示されるよう、全てのコンポーネントRakefilewarningオプションにtrueを指定しています。


Merge pull request #30406 from eliotsykes/reduce-spring-watch-calls

railties/lib/rails/generators/rails/app/templates/config/spring.rb.ttの修正です。

Spring.watchに監視したいファイルを渡すのに、ファイル毎にSpring.watchメッセージを呼び出していたのを、Spring.watchにファイルを配列で渡すようにしています。Spring.watchメソッドの呼び出しを減らせるようにする為。


Avoid 2.6 warning: shadowing outer local variable - list

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

ActiveStorage::Variation#image_processing_transformメソッドでshadowing outer local variable - listのwarningが出ていたのを修正しています。


correct link to activejob readme [ci skip]

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

ActiveJob::QueueAdapters moduleのdoc内、READMEについて言及している箇所で、実際のファイルへのリンクを追加しています。