2017/07/09分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
actioncable/CHANGELOG.md
- Prevent errors raised by sql.active_record notification subscribers from being converted into ActiveRecord::StatementInvalid exceptions.
- Skip query caching when working with batches of records (
find_each
,find_in_batches
,in_batches
).
Don’t call register on custom drivers
actionpack/lib/action_dispatch/system_testing/driver.rb
の修正です。
独自に登録したCapybaraのdriversをsystem testで使用した場合に、NoMethodError
でエラーになってしまうバグがあったのを修正しています。
Merge pull request #29708 from kamipo/fix_current_timestamp_for_mariadb
activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb
の修正です。
default
にCURRENT_TIMESTAMP
が使われているかのチェックを==
を使用していたのを、正規表現でチェックするよう修正しています。
- if type_metadata.type == :datetime && field[:Default] == "CURRENT_TIMESTAMP" - default, default_function = nil, field[:Default] + if type_metadata.type == :datetime && /\ACURRENT_TIMESTAMP(?:\(\))?\z/i.match?(field[:Default]) + default, default_function = nil, "CURRENT_TIMESTAMP"
MariaDB 10.2からCURRENT_TIMESTAMP
はfunction(current_timestamp()
)として扱われるようになり、==
では正しくチェック出来なくなった為。
Merge pull request #29706 from kamipo/use_information_schema_to_extract_expression
activerecord/lib/active_record/connection_adapters/mysql/schema_dumper.rb
の修正です。
MariaDB 10.2.5以降では、Virtual Columnsの情報をinformation_schema
から取得するようにしています。MariaDB 10.2.5以降ではinformation_schema
からVirtual Columnsの情報が取得出来るようになった為。
Merge pull request #29705 from y-yagi/do_not_update_secrets_yml_enc
railties/lib/rails/secrets.rb
の修正です。
secrets:edit
コマンドでsecretを編集する際、secretsを更新しなかった場合もsecrets.yml.enc
が更新されてしまっていたのを、secretsを更新しなかった場合はsecrets.yml.enc
が更新されないよう修正しています。
Merge pull request #29695 from y-yagi/secrets_show
railties/lib/rails/commands/secrets/secrets_command.rb
の修正です。
secretsを表示する為のsecrets:show
コマンドを追加しています。
Merge pull request #29495 from eugeneius/_write_attribute
Active Recordの修正です。
AttributeMethods::Write#_write_attribute
メソッドを追加しています。基本的にはwrite_attributes
メソッドと同じなのですが、こちらはprimary keyとaliasのチェックを行っておらず、その分高速なので、左記チェックが不要な箇所ではこちらのメソッドを使用するよう修正しています。
Merge pull request #29297 from palkan/fix/action-cable-postgres-identifiers-limit
actioncable/lib/action_cable/subscription_adapter/postgresql.rb
の修正です。
Action CableのadapterにPostgreSQLを使用している場合に、stream identifierが64文字以上になった場合、SHA1でハッシュ化した値を使用するよう修正しています。
PostgreSQLではidentifiersに指定出来る文字は63文字まで、という制限がある為。
Merge pull request #29692 from fimmtiu/avoid-translating-non-database-exceptions
activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
の修正です。
AbstractAdapter#log
メソッドでエラーが起きた際に、RuntimeError
以外の全てのエラーをActiveRecord::StatementInvalid
にまるめていたのを、まるめ処理を行う範囲をDBに関する処理を行う箇所だけにとどめて、その他のエラーはそのままraiseするよう修正しています。
Merge pull request #28867 from eugeneius/skip_query_cache_in_batches
Active Recordの修正です。
batch処理用のメソッド(find_each
、find_in_batches
、in_batches
)ではquery cachingは行わないよう修正しています。batch処理でrecordがメモリに残ってしまうのを防ぐ為。
activerecord/CHANGELOG.md
の修正です。
クラス名等にバッククォートを追加しています。
Merge pull request #29715 from reverbdotcom/ptd/fix-invalid-uuids
activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rb
の修正です。
中括弧が開き・閉じどちらかだけあるuuid({a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11
やa0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
等)はinvalidとみなすよう、チェック用の正規表現を修正しています。
- ACCEPTABLE_UUID = %r{\A\{?([a-fA-F0-9]{4}-?){8}\}?\z}x + ACCEPTABLE_UUID = %r{\A(\{)?([a-fA-F0-9]{4}-?){8}(?(1)\}|)\z}
(?(cond)yes-subexp|no-subexp)
という書き方が出来るんですねえ。
参考:https://github.com/k-takata/Onigmo/blob/3ddfbfcc469a246f8c5bc50072c7e9cdb1e50b22/doc/RE#L293
railties/lib/rails/secrets.rb
の修正です。
encrypted secretsの値を読み書きする際に、File.write
/ File.read
を使用していたのを、IO.binwrite
/ IO.binread
を使用するよう修正しています。
元々、Rails 5.1.1までは、IO.binwrite
/ IO.binread
を使用していたのが、5.1.2でFile.write
/ File.read
に変更されていました。しかし、それにより、Rails 5.1.1で作成した encrypted secretsをRails 5.1.2で読み込もうとすると、IO.binread
で読み込んだバイナリデータをFile.write
で書き込む事になり、結果エラー(Encoding::UndefinedConversionError
)なっていました。
その為、データの書き込みでエラーになるのを避ける為、5.1.1と同じくIO.binwrite
/ IO.binread
を使用するよう修正しています。
Load environment file in dbconsole
command
railties/lib/rails/commands/dbconsole/dbconsole_command.rb
の修正です。
dbconsole
コマンド実行時にenvironment fileを読み込むよう修正しています。database.yml
にenvironment fileに指定した値を使用出来るようにする為。
Use frozen-string-literal in ActiveSupport
Active Supportの修正です。
各ファイルの先頭にfrozen_string_literal: true
を追加しています。
Merge pull request #29655 from kirs/frozen-friendly-ap-ar
Action Pack、Action Viewの修正です。
各ファイルの先頭にfrozen_string_literal: true
を追加、及び、Stringを変更する箇所でdup
を呼び出すよう修正しています。