なるようになるブログ

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

rails commit log流し読み(2014/08/16)

2014/08/16分のコミットです。

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

activerecord/CHANGELOG.md


Use *_transaction methods in TransactionManager

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

トランザクション処理でTransactionManagerクラスの*_transactionメソッドを使用するよう修正しています。


Fix regression on after_commit in nested transactions.

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

transaction処理ネストして行った場合に、after_commitが実行されなかったバグを修正しています。

サンプル。

class Post < ActiveRecord::Base
  after_commit :do_something
  def do_something
    logger.warn "*** IN COMMIT ***"
  end
end

ActiveRecord::Base.transaction do
  ActiveRecord::Base.transaction(requires_new: true) do
    Post.create
  end
end

3系は動作していたのが4系で動作しなくなった、リグレッション対応です。


Unused ivar in a test suite

activesupport/test/multibyte_chars_test.rbの修正です。

使用していない変数を削除しています。


Avoid polluting String class globally in a test case

activesupport/test/multibyte_chars_test.rbの修正です。

テスト用のメソッドStringクラスに追加しているのですが、テストの為にglobalを汚すのはよくない、という事でsingleton_class経由でメソッドを定義するよう修正しています。

例。

@chars.wrapped_string.singleton_class.class_eval { def __method_for_multibyte_testing; 'result'; end }

Avoid mutating the constants in a test case

activesupport/test/multibyte_chars_test.rbactivesupport/test/multibyte_test_helpers.rbの修正です。

テストの中で定数を変化させてしまっている箇所があったのを修正しています。

また、事故防止の為に定数に値を設定する際にfreezeメソッドを呼び出して、凍結状態にしています。