なるようになるブログ

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

rails commit log流し読み(2016/10/21)

2016/10/21分のコミットです。

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

activesupport/CHANGELOG.md


Use old typecasting method if no type casted binds are passed in

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

ActiveSupport::Notificationssql.active_record eventのログを出力する際、bindが使用されたcached queryのログを出力する際にエラーになっていたのを修正しています。

cached queryの場合、ActiveRecord::LogSubscriber#sqlの引数にbindsのみ設定されており、type_casted_bindsが設定されてなかった為、type_casted_bindsを展開してログを生成する際にエラーになってしました。type_casted_bindsが渡されなかった場合、ActiveRecord::LogSubscriberの中でtype_casted_bindsを生成するようにして対応しています。


[ci skip] Fix return values of Hash Extensions examples

rails guideのActive Support Core Extensionsの修正です。

Hash#transform_keysHash#stringify_keysHash#symbolize_keysのexampleで、exampleコードの戻り値が実際の戻り値と異なっていたのを修正しています。


remove trailing whitespace [ci skip]

rails guideのActive Record Migrationsの修正です。

行末尾の不要な空白を削除しています。


guides, include note about modifiers when using the CLI.

rails guideのActive Record Migrationsの修正です。

Column Modifiersの項に、nulldefaultコマンドラインからは指定出来ない旨注記を追加しています。


doc, hide non-public methods form the api docs. [ci skip]

activesupport/lib/active_support/core_ext/module/attribute_accessors_per_thread.rbのdocの修正です。

Module#thread_mattr_readerModule#thread_mattr_writer:nodoc:を設定し、API docに表示されないようにしています。

reader / writerだけを使う事は無いはずで、かつ、そのような使い方は許容しない為、のようです。Module#thread_mattr_accessorは引き続き使用出来ます。


Merge pull request #26839 from renuo/fix-missing-nsec-transfer

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

DateAndTime::Calculations#copy_time_toメソッドで値をコピーする際に、usecを使用していたのをnsecを使用するよう修正しています。 ナノ秒まで値がコピーされるようにする為。


don't create db directory when skip active_record

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

rails newコマンドにskip_active_recordオプションを指定した場合に、dbディレクトリを作成しないよう修正しています。


Explicitly unpack the expanded args to avoid execution order diff.

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

ActiveSupport::Callbacks::CallTemplate#make_lambda#inverted_lambdaメソッドで、#expandメソッドの戻り値をまとめてArrayとして扱っていたのを、個別に変数に格納するよう修正しています。

-            c = expand(target, value, block)
-            c.shift.send(*c, &c.shift)
+            target, block, method, *arguments = expand(target, value, block)
+            target.send(method, *arguments, &block)
           end

元のコードはc変数のスプラッティングがshift処理より前に行われる事が期待されていたのですが、実際はそうではなかった(shiftの後に行われていた)為、blockを指定した際に正しく動作しない問題があった為、変数を分けるようにして対応したとの事です。

なお、Ruby本体のバグではないかという事で、bugs.ruby-langにチケットが作られています。Bug #12860: Splatting an argument does not obey left-to-right execution order - Ruby trunk - Ruby Issue Tracking System