なるようになるブログ

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

rails commit log流し読み(2015/11/17)

2015/11/17分のコミットです。

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


Merge pull request #22215 from grosser/grosser/normalize_key

Active Supportのcache処理の修正です。

各cache backends毎にやっていたcache keyのノーマライズ処理、を共通の親クラスであるActiveSupport::Cache::Storeでのみ行うようリファクタリングを行っています。


Using released concurrent-ruby

Gemfile.lockactivesupport/activesupport.gemspecの修正です。

concurrent-rubyのバージョンを1.0.0.pre5 から1.0.0に修正しています。


Merge pull request #22257 from yui-knk/fix_merge_to_not_call_to_proc_for_hash

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

ActiveRecord::SpawnMethods#merge!メソッドRubyのtrunkで動かなくなっていたのを修正しています。

     def merge!(other) # :nodoc:
-      if !other.is_a?(Relation) && other.respond_to?(:to_proc)
+      if other.is_a?(Hash)
+        Relation::HashMerger.new(self, other).merge
+      elsif other.respond_to?(:to_proc)
         instance_exec(&other)
       else
-        klass = other.is_a?(Hash) ? Relation::HashMerger : Relation::Merger
-        klass.new(self, other).merge
+        Relation::Merger.new(self, other).merge
       end

元々は、引数のotherto_procメソッドが定義されていた場合instance_execメソッドでブロックを実行し、to_procが定義されていない場合は、引数がHashの場合はRelation::HashMerger、それ以外の場合はRelation::Mergerクラスを使ってマージ処理を行っていました。

しかし、Ruby 2.3.0からHashto_procが定義されており(hash.c: to_proc · ruby/ruby@fbe967e)、Hashto_procのチェックでひっかかるようになってしまった為、最初にHashかどうかをチェックするよう修正しています。


Merge pull request #22271 from timbreitkreutz/twb-9015-schema-dumper-test-for-prefix-and-ignore

activerecord/test/cases/schema_dumper_test.rbの修正です。

table_name_prefixignore_tablesを指定した場合のSchemaDumperの挙動についてのテストを追加しています。


Raise ArgumentError when passing a truthy value to merge

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

ActiveRecord::Relation#mergeメソッドに、不正なtruthyな値が指定された場合に、ArgumentErrorをraiseするよう修正しています。

Raise ArgumentError when passing nil to Relation#merge · rails/rails@b71e08fnilfalseが渡された場合にArgumentErrorをraiseするよう対応しており、不正なtruthyな値の場合も同様にraiseするよう修正したとの事です。