なるようになるブログ

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

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

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

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

activesupport/CHANGELOG.md


Merge pull request #32274 from eileencodes/part-1-add-rake-tasks-for-multi-db

Active Recordの修正です。

db setup用のrake task(db:createdb:migratedb:dropdb:schemastructure:dump)に複数DBのサポートを追加しています。

database.ymlに3階層の定義をしていた場合、でenv配下のすべてのDBに対して上記コマンドを実行してくれるようになっています。

例。

development:
  primary:
    <<: *default
    database: multiple_databases_development
  animals:
    <<: *default
    database: multiple_databases_development_animals
    migrations_paths: "db/animals_migrate"

test:
  primary:
    <<: *default
    database: multiple_databases_test
  animals:
    <<: *default
    database: multiple_databases_test_animals
    migrations_paths: "db/animals_migrate"
$ bin/rails db:create
Created database 'multiple_databases_development'
Created database 'multiple_databases_development_animals'
Created database 'multiple_databases_test'
Created database 'multiple_databases_test_animals'
$ bin/rails db:drop
Dropped database 'multiple_databases_development'
Dropped database 'multiple_databases_development_animals'
Dropped database 'multiple_databases_test'
Dropped database 'multiple_databases_test_animals'

また、各コネクション毎にtaskが追加され、特定のコネクションに対してtaskが実行出来るようになっています。

$ bin/rails db:drop:primary
Dropped database 'multiple_databases_development'
$ bin/rails db:create:primary
Created database 'multiple_databases_development'
$ bin/rails db:migrate:primary
== 20180206210418 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.0149s
== 20180206210418 CreatePosts: migrated (0.0151s) =============================

== 20180206210446 CreateComments: migrating ===================================
-- create_table(:comments)
   -> 0.0174s
== 20180206210446 CreateComments: migrated (0.0175s) ==========================

他のtaskや、詳細なドキュメントについては今後対応予定。


Merge pull request #32185 from nholden/human_readable_date_time_comparisons

Active Supportの修正です。

DateDateTimeTimeTimeWithZonebefore?afterメソッドを追加しています。それぞれ<>のalias。

Date.new(2017, 3, 6).before?(Date.new(2017, 3, 5)
Date.new(2017, 3, 6).after?(Date.new(2017, 3, 5)

のようにかけるようになっています。


Flip the order of the after_create callbacks

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

attachmentのafter_create_commit callbackでanalyze_blob_lateridentify_blobの順に処理を実行していたのを、identify_blobanalyze_blob_laterの順に実行するよう修正しています。

-  after_create_commit :identify_blob, :analyze_blob_later
+  after_create_commit :analyze_blob_later, :identify_blob

analyze処理でmetadataのmergeを行う為、それまでにidentifyを終わらせるよう先にidentify_blobを呼ぶようにしています。なお、そもそもその意図で設計していたようなのですが、after_create_commitのcallback実行順を勘違い(後に記載した方が先に実行される)してしまっていたようです。