なるようになるブログ

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

rails commit log流し読み(2018/10/10)

2018/10/10分のコミットです。

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

activerecord/CHANGELOG.md

actionview/CHANGELOG.md


Merge pull request #34117 from aergonaut/docs/ActiveRecord--Persistence-belongs_to_touch_method

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

ActiveRecord::Persistence#belongs_to_touch_methodメソッドにdocを追加しています。


Merge pull request #34105 from zvkemp/correct-asn-docs

rails guideのActive Support Instrumentation、及び、activesupport/lib/active_support/notifications.rbのdocの修正です。

unique IDについての説明が、event毎にuniqueなIDとなっていたのを、instrumenter毎にuniqueなIDである旨説明を修正しています。


Merge pull request #34081 from gmcgibbon/db_migrate_status_move

activerecord/lib/active_record/railties/databases.rakeactiverecord/lib/active_record/tasks/database_tasks.rbの修正です。

db:migrate:status taskの実装がrakeファイル内に定義されていたのを、ActiveRecord::Tasks::DatabaseTasks.migrate_statusメソッドを新規に作成、そちらで実装を行うよう修正しています。


Merge pull request #34075 from hakusaro/guides-reference-leases

rails guideのContributing to Ruby on Railsの修正です。

PRを更新したりsquashしたりした後に、ブランチを再pushする際のexampleで-fオプションを使用していたのを、--force-with-leaseオプションを使用するよう修正しています。他の人がpushしていた場合に上書きしてしまうのを防ぐ為。


Merge pull request #34071 from y-yagi/skip_webpacker_install

railtiesの修正です。

rails newコマンドにskip_webpack_installオプションを追加しています。名前の通りで、webpacker:installの実行をスキップするかどうかを指定する為のオプション。


Improve DELETE with JOIN handling to avoid subqueries if possible

activerecord/lib/arel/visitors/mysql.rbactiverecord/lib/arel/visitors/to_sql.rbの修正です。

DELETE + JOINが含まれるqueryを実行する際に、可能ならサブクエリーの使用を避けるよう修正しています。


Refactor Arel visitor to use collect_nodes_for as much as possible

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

Arel visitorで独自に処理を行っていた箇所について、collect_nodes_forメソッドを使用するようリファクタリングしています。


Fix odd indentation

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

Visitors:: MySQL#visit_Arel_Nodes_Unionメソッド内のコードのインデントがおかしくなってしまっている箇所があったのを修正しています。


Call load_schema before assert_no_queries

activerecord/test/cases/null_relation_test.rbの修正です。

test_none_chainableassert_no_queriesを使用する前にload_schemaを呼び出すよう修正しています。where実行時にschemaのload処理が行われ、assert_no_queriesがエラーになってしまうのを避ける為。


Merge pull request #34094 from christophemaximin/fix-activerecord-clearing-of-query-cache

Active Recordの修正です。

assocationに対するreload処理がownerに対するreload処理と挙動が異なっていた(ownerに対するreloadだとquery cacheのclear + 新しいレコードの取得だが、assocationはquery cacheがそのままだったりしていた)のを、全てquery cacheをclaer + 新しいレコードの取得になるよう修正しています。


Merge pull request #34122 from kamipo/generate_relation_methods

activerecord/lib/active_record/relation/delegation.rbactiverecord/lib/active_record/scoping/named.rbの修正です。

scope定義時にnamed scopeへのdelegation methodsを生成するよう修正しています。

元々は、Relationのmethod_missingが実行された際にdelegation methodsは生成されていました。が、それだと、superclassで定義されているのと同じ名前のnamed scope(e.g. Kernel.open)が定義されていた場合、method_missingが実行されず結果そのnamed scopeが呼ばれない、という問題があった為、定義時に処理を行うよう修正したようです。


Add allocations to template renderer subscription

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

template rendering instrumentationでAllocationsの値を表示するよう修正しています。

Before:

  Rendering posts/new.html.erb within layouts/application
  Rendered posts/_form.html.erb (9.7ms)
  Rendered posts/new.html.erb within layouts/application (10.9ms)
Completed 200 OK in 902ms (Views: 890.8ms | ActiveRecord: 0.8ms)

After:

  Rendering posts/new.html.erb within layouts/application
  Rendered posts/_form.html.erb (Duration: 7.1ms | Allocations: 6004)
  Rendered posts/new.html.erb within layouts/application (Duration: 8.3ms | Allocations: 6654)
Completed 200 OK in 858ms (Views: 848.4ms | ActiveRecord: 0.4ms | Allocations: 1539564)

Allocationsの値はGC.stat :total_allocated_objectsから取得した値です。


Merge pull request #34109 from bogdanvlviv/follow-up-34064

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

Merge pull request #33970 from rails/eager-url-helpersをrevertした、Merge pull request #34064 from schneems/schneems/revert-7f870a5ba2aa9177aa4a0e03a9d027928ba60e49の修正で、一部コードがrevert出来てなかった(削除漏れがあった)のを修正しています。