2015/02/02分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Merge pull request #18769 from gsamokovarov/exception-wrapper-windows-paths
actionpack/lib/action_dispatch/middleware/exception_wrapper.rb
の修正です。
エラーページでファイル名、行数を表示する際、trace
を":"で分割していたのですが、 Windowsではドライブレターに":"が使われており、":"で分割してまうと正しいファイル名、行数が取得出来ないバグがあったのを修正しています。
Merge pull request #18721 from sj26/pre-discard-flash
actionpack/lib/action_controller/test_case.rb
、
actionpack/lib/action_dispatch/middleware/flash.rb
の修正です。
flash.discard
を行った場合、画面上は表示されないものの、Flas
クラスではdiscard
した値を保持していました。
で、discard
した値は保持している必要は無いのでは、という事でdiscard
した値は保持しないよう修正しています。
Merge pull request #18756 from ajgrover/activejob_tests
Gemfile
の修正です。
queue_classic
のバージョンを"3.0.0"未満に固定していたのを、バージョン固定を削除しています。
queue_classic
、もう3.0.3まで出ていたとの事です。
stop making calls to add_record
activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
の修正です。
commit_transaction
メソッドでtransactionにレコードを追加するのに、add_record
メソッドを使用していたのを削除し、add_to_transaction
を使うよう修正しています。
remove conditional that is always true
activerecord/lib/active_record/transactions.rb
の修正です。
add_to_transaction
メソッドでadd_transaction_record
がtrueの場合にremember_transaction_record_state
メソッドを呼び出す、という処理があったのですが、
add_transaction_record
が必ずtrueを返すため、条件分岐は不要との事で削除しています。
push add to transaction logic down to the instance
activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
、
activerecord/lib/active_record/transactions.rb
の修正です。
transaction objectのメソッドでActiveRecordのインスタンスがcallbacksメソッドが定義されてるかどうかチェックをしていたのを、ActiveRecord自身のメソッドでチェックを行うよう修正しています。
make the private methods private
activerecord/lib/active_record/core.rb
の修正です。
set_transaction_state
、has_transactional_callbacks?
メソッドをprivate methodに変更しています。
activerecord/lib/active_record/core.rb
の修正です。
after_create
callbackが設定されているrecordのsave時に、大量のメモリを消費してしまうバグがあったのを修正しています。ユーザ定義のcallbackだけでなく、associationに関するcallbackでも対象のようです。詳細はPR参照。
add destroyed records to the currend transaction
activerecord/lib/active_record/persistence.rb
、
activerecord/lib/active_record/transactions.rb
の修正です。
transactionを行っているrecordの削除処理を追加しています。
actionpack/lib/action_dispatch/routing/route_set.rb
の修正です。
url_helpers
メソッドで、一度取得したhelperの情報をインスタンス変数に保持し、次呼び出された場合はその保持した値を返すよう修正しています。
テスト等で頻繁にurl_helpers
メソッド呼び出す場合に恩恵受けれそうですねえ。
Cache url_helpers
separately for mailers
actionpack/lib/action_dispatch/routing/route_set.rb
の修正です。
先ほどのurl_helpers
のメモ化の対応で、引数(supports_path
)に対するケアがたりてなかったので、supports_path
がtrue/falseそれぞれ毎に、違うインスタンス変数に保持するよう修正しています。
+ if supports_path + @url_helpers_with_paths ||= generate_url_helpers(supports_path) + else + @url_helpers_without_paths ||= generate_url_helpers(supports_path) + end
Fix validations on child record when record parent has validate: false
ActiveRecord / ActiveModelの修正です。
associationを使用している場合に、既に存在している子のレコードを親に指定して、親をsaveした場合に、 子の値が一切変更になってないにも関わらず、不要なvalidation処理が実行されてしまうバグがあったのを、 値が変更されてるかどうかチェックし、値の変更が無い場合は不要なvalidation処理は行わないよう修正しています。
issuより。
class Conversation < ActiveRecord::Base has_many :conversation_users has_many :users, through: :conversation_users end class ConversationUser < ActiveRecord::Base belongs_to :conversation belongs_to :user end class User < ActiveRecord::Base has_many :conversation_users has_many :conversations, through: :conversation_users validates :name, presence: true end class BugTest < Minitest::Test def test_conversation_with_valid_existing_user user = User.create!(name: "North Bieber") assert user.persisted? conversation = Conversation.new(user_ids: [user.id]) conversation.save! assert_equal 1, conversation.users.count assert_equal [user], conversation.users end def test_conversation_with_invalid_existing_user user = User.new() user.save!(validate: false) assert user.persisted? # ここで"Validation failed: Users is invalid"が起きてしまう conversation = Conversation.new(user_ids: [user.id]) conversation.save! assert_equal 1, conversation.users.count assert_equal [user], conversation.users end end
activesupport/lib/active_support/core_ext/time/calculations.rb
のdocの修正です。
change
メソッド:nsec
オプションの説明内の、"Path"を"Pass"に修正しています。