なるようになるブログ

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

rails commit log流し読み(2014/05/23)

2014/05/23分のコミットです。

CHANGELOGにのったコミットは以下の通りです(詳細は本文参照)。

activerecord/CHANGELOG.md


Allow additional arguments to be used during type map lookups

ActiveRecord::ConnectionAdapters:::Type::TypeMap::HashLookupTypeMap#fetchメソッドの修正です。

ブロックを受け取れるよう引数を修正しています。 OIDで使用する為の模様。


Use the generic type map for all PG type registrations

PostgreSQLのDB Adapterの修正です。

activerecord/lib/active_record/connection_adapters/postgresql/oid.rbで行っていた型定義処理を、ActiveRecord::ConnectionAdapters::AbstractAdapte::PostgreSQLAdapter#initialize_type_mapで行うよう修正しています。


Remove unnecessary Hash#to_a call

actionpack/lib/action_dispatch/journey/formatter.rbの修正です。

不要なto_aメソッドを削除しています。

メソッドの削除により、オブジェクト生成数が一つ減るようです。


Rename stack to queue

actionpack/lib/action_dispatch/journey/formatter.rbの修正です。

変数名をstack (LIFO)からqueue (FIFO)に修正しています。コミットログにwikiへのリンクが貼られています。親切。


Move extract_precision onto type objects

PostgreSQLのDB Adapterの修正です。

PostgreSQLColumnで保持していいたprecisionOID::Money で保持するよう修正しています。

PostgreSQLColumn.money_precision
OID::Money.precision

ちょっとスッキリ。


Push scale to type objects

DB Adapterの修正です。

type objectにscaleを追加しています。


Push precision to type objects

DB Adapterの修正です。

type objectにprecisionを追加しています。


Removed not-used code

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

使用していないコードを削除しています。


Push limit to type objects

DB Adapterの修正です。

type objectでlimit値を保持するよう修正しています。


Don't recurse infinitely when calling non-existent method on super

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

superクラスに存在しないメソッドを呼び出した際のテストを追加しています。

activerecord/lib/active_record/attribute_methods.rbにバグがあって、先にテストコードが追加されています。

本来、NoMethodErrorになるべき所ですが。SystemStackError: stack level too deepになってしまっていますね。


fix test from 7537057888d2d63c3b6c2019d5828bc445fbd6c9

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

メソッドの呼び出しについて修正。


Fixed serialization for records with an attribute named format.

カラム又はアトリビュート名に特定の名称を使用している場合に、シリアライゼーションしようとするとエラーになるバグの修正です。

  1. クラス/インスタンスのカラム/アトリビュート名に、既にクラスで定義されているprivateメソッドと同じ名前を使用する(例えば、Kernel#formatなど)
  2. そのアトリビュートメソッドがクラスに定義されていない

上記条件の時に、シリアライゼーション処理(as_json等)を行うと、too few argumentsが起こる、との事です。


Avoid slowing down AR object initialization

ActiveRecord::AttributeMethods#define_attribute_methodsメソッドの修正です。

上記シリアライゼーションのバグの修正で、ARのインスタンスを生成する際、必ずdefine_attribute_methodsを呼び出すよう対応したのですが、このメソッドはmutexを使っており、処理が遅いので、毎回呼ばれると処理速度の低下につながるおそれがありました。

なので、一度処理が呼ばれたら、mutexの処理を行わないよう、アーリーリターンを追加しています。


use symbol keys for path_parameters

routing関係の修正です。

Stringを使用している箇所を、Symbolに修正しています。


just return path parameters

ActionDispatch::Http::Parameters#symbolized_path_parametersメソッドの修正です。

path parametersをそのままreturnするよう修正しています。


pass the instantiated request to the find_routes method

actionpack/lib/action_dispatch/journey/router.rbの修正です。

find_routesメソッドRequestインスタンスを渡すよう修正しています。


stop using PARAMETERS_KEY, and use the accessor on the request object

routing関係の修正です。

PARAMETERS_KEYを使用するのを辞めて、Requestオブジェクトのメンバ変数を使用するよう修正しています。

envからの分離の為、との事。


resolved reorder issue in rails active record guide

rails guideのActive Record Query Interfaceの修正です。

生成されるqueryが誤っていたのを修正しています。


Bring the missing parameters back.

ActiveRecord::AttributeMethods#method_bodyメソッドの修正です。

引数が足りてなかったのを追加しています。


Added force_reload to Auto-generated methods doc

ActiveRecord::Associations::ClassMethodsのdocの追加です。

See also Instance Public methods below for more details.の一行を追加されています。

2014-05-23 18:43:12 +0900


Remove warning remeving the method before redefining

activesupport/test/subscriber_test.rbの修正です。

同じメソッドが定義されている場合の事を考慮して、remove_methodを追加しています。