なるようになるブログ

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

rails commit log流し読み(2017/03/01)

2017/03/01分のコミットです。

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


Revert “Dupping a CollectionProxy should dup the load_target”

CollectionProxy#dupが、load_targetdupするよう修正した、Dupping a CollectionProxy should dup the load_targetをrevertしています。

元となったissue(https://github.com/rails/rails/issues/17117)が、dupは元のレコード及びassociationのデータを返すべきである、という指摘だと思い上記対応を行ったのですが、実際は元のデータのコピーを期待していた(Rails 3までの挙動がそうだった)らしい、という事がわかったので一旦revertしたようです。多分。


Merge pull request #28063 from Erol/prioritize-callback-on-action-before-if

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

transaction callbacks で:onオプションの条件に当てはまらない場合、:ifオプションに指定された値が評価しないよう修正しています。

PRより。

class Topic < ActiveRecord::Base
  after_commit :do_something, on: [:create, :update], if: :check_something?
end

topic = Topic.create #=> Calls :check_something?
topic.save #=> Calls :check_something?
topic.destroy #=> No longer calls :check_something?

Merge pull request #28217 from kamipo/create_join_table_respects_reference_key_type

activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rbの修正です。

create_join_tableメソッドで生成される外部キーのtypeのデフォルトがintegerになっていたのを、referencesメソッドを使用するよう修正しています。

Change Default Primary Keys to BIGINTでデフォルトのPKがBIGINTに変更になっており、integerだとエラーになってしまう為。


Merge pull request #28210 from cefigueiredo/improve_required_test

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

ActiveRecord::Base.belongs_to_required_by_defaultにtrue, falseをそれぞれ明示的に設定した場合のテストを追加しています。


Merge pull request #28120 from vfonic/plugin-generator-skip-turbolinks-dummy

railties/lib/rails/generators/rails/plugin/plugin_generator.rbの修正です。

plugin / engineが生成するdummy applicationが、デフォルトでturbolinksをskipするよう修正しています。


Merge pull request #25296 from kamipo/use_inspect_for_type_cast_for_schema

Active Record / Active Modelの修正です。

date/time及びdecimalの値をschemaにdumpする際に、他の型同様にinspectメソッドを使用するよう修正しています。

PRより。

Before:

  create_table "defaults", force: :cascade do |t|
    t.string   "string_with_default",   default: "Hello!"
    t.date     "date_with_default",     default: '2014-06-05'
    t.datetime "datetime_with_default", default: '2014-06-05 07:17:04'
    t.time     "time_with_default",     default: '2000-01-01 07:17:04'
    t.decimal  "decimal_with_default",  default: 1234567890
  end

After:

  create_table "defaults", force: :cascade do |t|
    t.string   "string_with_default",   default: "Hello!"
    t.date     "date_with_default",     default: "2014-06-05"
    t.datetime "datetime_with_default", default: "2014-06-05 07:17:04"
    t.time     "time_with_default",     default: "2000-01-01 07:17:04"
    t.decimal  "decimal_with_default",  default: "1234567890"
  end

Merge pull request #28230 from y-yagi/HOST_to_be_in_uppercase

railties/lib/rails/commands/server/server_command.rbの修正です。

ENV["HOST"]ENV["Host"]にタイポしていたのを修正しています。


Whitelist adapters that support aliases in HAVING clause

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

having句で指定したaliasをselectに含む場合のテストを、Mysql2AdapterSQLite3Adapterでのみ実行するよう修正してます。

-    skip if current_adapter?(:PostgreSQLAdapter, :OracleAdapter)
+    skip unless current_adapter?(:Mysql2Adapter, :SQLite3Adapter)

上記挙動はSQL標準ではないため、ホワイトリストでサポートしているDBを明示する方が適切だろう、という事で修正されています。


Use DEFAULT_CIPHER constant in MessageEncryptor

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

MessageEncryptor#initializeメソッドでcipherのデフォルト値を設定するのにDEFAULT_CIPHER定数を使用するよう修正しています。


Merge pull request #28239 from y-yagi/use_appropriate_type_for_test_framework_option

railties/lib/rails/generators.rbの修正です。

generatorのtest_frameworkオプションのデフォルト値に不正な値(string型なのに、デフォルトにfalseを設定していた)を指定していたのを修正しています。