なるようになるブログ

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

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

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

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

actionview/CHANGELOG.md


Introduce test to demonstrate regression caused by da99a2a2

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

このコミットHashLookupTypeMapでaliasを不適切にキャッシュしてしまうリグレッションが発生してしまい、その確認のの為のテストを追加してます。


Revert "PERF: optimise type lookup to avoid invoking procs"

HashLookupTypeMapの性能改善のコミットをrevertしています。対応は先に記載した通り、リグレッションが発生した為のようです。


That last test was incorrect... ☕

……と思ったら。先に追加したtype_map_test.rbのテストを削除しています。"incorrect"との事。


Remove bullet point to unwritten/unreferenced section

rails guideのAction View Overviewの修正です。

目次にHow to use Action View outside of Rails.とあったのですが、実際は左記内容を記載している箇所は無いので、目次から削除しています。


Add tests for TypeMap#fetch and push up to TypeMap

activerecord/lib/active_record/type/type_map.rbactiverecord/lib/active_record/type/hash_lookup_type_map.rbの修正です。

TypeMap#fetchメソッド及びテストの追加を行っています。


Reintroduce cache with tests

activerecord/lib/active_record/type/hash_lookup_type_map.rbactiverecord/lib/active_record/type/type_map.rbの修正です。

TypeMapクラスで、一度fetchした値はキャッシュするよう対応しています。


Fix shell quote on the release task

tasks/release.rbの修正です。

railsのリリース用のtaskで、シェルのクォートが抜けていた箇所があったのを対応しています。

-    unless ENV['SKIP_TAG'] || `git tag | grep '^#{tag}$`.strip.empty?
+    unless ENV['SKIP_TAG'] || `git tag | grep '^#{tag}$'`.strip.empty?

Merge pull request #17575 from shikshachauhan/make-habtm-consistent

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

has_and_belongs_to_manyのオプションのclass_nameにSymbolを指定した際に、正常に動作していなかったのを修正しています。


Some valid block calls in templates caused syntax errors

actionview/lib/action_view/template/handlers/erb.rbの修正です。

view templateに<%= foo(){ %><%= foo()do %>が記載出来ないバグがあったのを修正しています。


PERF: avoid string allocations

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

build_selectメソッドでString生成処理を減らすよう改善しています。

-          columns_hash.key?(field.to_s) ? arel_table[field] : field
+          if (Symbol === field || String === field) && columns_hash.key?(field.to_s)
+            arel_table[field]
+          else
+            field
+          end

最初にfieldの型チェックを行って、Symbol、Stringの場合はto_sの変換処理を行わないようにしています。


synchronize code and docs for timestamps and add_timestamps.

ActiveRecordの修正です。

rails 4.2からtimestampsadd_timestampsnullパラメータを指定しないとwarningが出るようになったので、timestampsのサンプルが記載してある箇所にnullパラメータの追加、及びadd_timestampsメソッドでdeprecateメソッドが出力される事のテストを追加しています。