2014/05/05分のコミットです。
rails 4.1で挙動が変わってしまったActiveRecord::Relation#join
、Hash#to_param
をrails 4.0.xと同じ挙動にする修正が行われています。
Convert column name to string only once
ActiveRecord::ConnectionAdapters::SchemaStatements#column_exists?
メソッドの修正です。
ブロックの中で複数回行われてしまっていたto_s
メソッドを、外だしして一度だけ処理するよう修正しています。
Remove deprecated file(active_support/core_ext/object/to_json.rb
) and its test case.
deprecateになっていたactive_support/core_ext/object/to_json.rb
を削除しています。
今後は、代わりにactive_support/core_ext/object/json
をrequireする必要があります。
Follow-up to #14905 and formatting pass
rails guideのGetting Startedの修正です。
改行やらインデントやらのフォーマットの修正です。
Merge pull request #14946 from jcoleman/fix-null-binary-column-logging-exception
ActiveRecord::ActiveSupport::LogSubscriber::LogSubscriber#render_bind
メソッドの修正です。
binary型のカラムをnil
で更新したときに、ロギング処理でexceptionが発生していたのを修正しています。
nil
で更新された際は、"
上のロギング処理の修正です。判定処理を逆にしています。
- value = value.nil? ? "<NULL binary data>" : "<#{value.bytesize} bytes of binary data>" + value = value ? "<#{value.bytesize} bytes of binary data>" : "<NULL binary data>"
valueがnilでないケースの方が多いから、という理由だそうです。なるほど。
Merge pull request #14949 from bogdan/empty-hash-array-parameterization
Hash#to_param
メソッドの修正です。空のHash/Arrayがあった場合のserializationの結果を修正しています。
# before {a: []}.to_query # => "a%5B%5D=" # after {a: []}.to_query # => ""
rails 4.1で動作が変わってしまったのを、また戻した形です。
同じくHash#to_param
メソッドの修正です。不要なelse
を削除しています。
CHANGELOGの修正です。上記to_param
の更新についての記載箇所について、ピリオドを追加しています。
Merge pull request #11166 from xavier/callable_constraint_verification
ActionDispatch::Routing::Constraints
の修正です。
ルーティングの:constraints
オプションには、成約を定義したオブジェクトを渡せるのですが、渡すオブジェクトは:call
または:matches?
メソッドが定義されている必要がありますが。
が、現状どちらのメソッドが定義されていなくても、エラーが起きず握りつぶしてしまっていたのですが、メソッドが定義されていない場合にArgumentError
が起こすように修正しています。
:constraints
にオブジェクトを渡せるの知りませんでした。以下使い方についてのメモ(rails guideからの抜粋)。
class BlacklistConstraint def initialize @ips = Blacklist.retrieve_ips end def matches?(request) @ips.include?(request.remote_ip) end end Rails.application.routes.draw do get '*path', to: 'blacklist#index', constraints: BlacklistConstraint.new end
Do not use short-circuit return
直ぐ上のconstraints
対応のコミットについて、return if ~
している箇所を修正しています。
- return if callable_constraint.respond_to?(:call) || callable_constraint.respond_to?(:matches?) - raise ArgumentError, "Invalid constraint: #{callable_constraint.inspect} must respond to :call or :matches?" + unless callable_constraint.respond_to?(:call) || callable_constraint.respond_to?(:matches?) + raise ArgumentError, "Invalid constraint: #{callable_constraint.inspect} must respond to :call or :matches?" + end
修正後の方がスッキリといえばスッキリかなあ。個人的には、最初の書き方してしまいそうですが。
こちらもconstraints
対応のコミットの修正です。
assert_raise
メソッドをassert_raises
に修正しています。
Minitestにはassert_raise
メソッドが無いので、assert_raise
だと、test-unitのメソッドが呼ばれてしまうから、ですかねえ。
CHANGELOGの修正です。不要なスペースの削除、シングルコーテーションの追加など。
activerecord/activerecord.gemspec
の修正です。Arelのバージョンを6.0.0
に修正しています。
Get rid of extra local var that does not add to the logic
AbstractController::Base#process
メソッドの修正です。不要な変数を削除しています。
Get rid of unused method in AR Post test model
activerecord/test/models/post.rb
から、使用していないメソッドを削除しています。
Put back Relation#join method as a delegate to Array
ActiveRecord::Relation#join
の動作の修正です。
rails 4.0.xでは、ActiveRecord::Relation#join
はArray#join
にdelegateされていたのですが、4.1ではArel#SelectManager
ではdelegateされるようになっていました。
これを、4.0.x同様にArray#join
にdelegateするように修正しています。