なるようになるブログ

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

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

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

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


default scopes should break the cache on has_many.

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

has_manyアソシエーションを使用している際に、アソシエーション先のmodelにdefault_scopeが設定されていた場合、scopeの情報が破棄されない問題があったのを修正しています。

issueから抜粋。

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
  belongs_to :parent
  default_scope -> { where("created_at >= :five_minutes_ago", :five_minutes_ago => Time.now - 5.minutes) }
end
parent = Parent.first

# first call at 2014-11-05 03:50:30.738924 (The query of scope is cached.)
puts parent.children.to_sql # => SELECT "children".* FROM "children" WHERE (created_at >= '2014-11-05 03:45:30.738924') AND "children"."parent_id" = 1

# unchanged condition (The cached query was referred.)
puts parent.children.to_sql # => SELECT "children".* FROM "children" WHERE (created_at >= '2014-11-05 03:45:30.738924') AND "children"."parent_id" = 1

# unchanged condition even if call reset (Can not clear the cache!)
parent.children.reset
puts parent.children.to_sql # => SELECT "children".* FROM "children" WHERE (created_at >= '2014-11-05 03:45:30.738924') AND "children"."parent_id" = 1

Merge pull request #17493 from petewest/duration-comparable

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

<=>valuedelegateするよう修正しています。

rails 4.2で0.seconds <=> 1.secondnilを返す問題があったので修正したようです。


[ci skip] Fix line break on command line guide

rails guideのThe Rails Command Lineの修正です。

改行の位置を修正しています。

一つの文に複数の改行があると、Google Translator Toolkit(GTT)で問題が起きるので対応したとの事です。


default scopes should break the cache on singulur_association.

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

先にあったdefault_scopeの情報が破棄されない問題について、belongs_toについても同様の問題があったので修正しています。


Merge pull request #17476 from robin850/job-testing

rails guideのA Guide to Testing Rails Applicationsの修正です。

ActiveJobのテストのやり方についての説明を追加しています。