なるようになるブログ

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

rails commit log流し読み(2015/08/14)

2015/08/14分のコミットです。

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

activerecord/CHANGELOG.md


descriptive error message when fixtures contian a missing column.

activerecord/lib/active_record/connection_adapters/abstract/database_statements.rbの修正です。

fixturesに、テーブルに存在しないカラム名が指定されていた場合に明確にその旨わかるようエラーメッセージを表示するよう修正しています。

エラーメッセージ例。

# before
NoMethodError: undefined method `sql_type' for nil:NilClass

# after
ActiveRecord::Fixture::FixtureError: table "parrots" has no column named "arrr"

Merge pull request #19770 from vngrs/prevent_duplicated_where_clauses

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

abstract classでdefault scopeを使用していた場合に、default scopeに指定したwhereが2回設定されてしまうバグがあったのを修正しています。

例。

class User < ActiveRecord::Base
  self.abstract_class = true
  default_scope { where('deleted_at IS NULL') }
end

class Admin < User
end

Admin.all.load # => SELECT "admins".* FROM "admins" WHERE (deleted_at IS NULL) AND (deleted_at IS NULL)

4.2.0系から発生していたリグレッションのようです。


raise if anchor is passed to scope

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

scopeメソッドanchorオプションが渡された場合に、ArgumentErrorをraiseするよう修正しています。

anchorオプションが指定された場合、matchメソッドの方でオプションの処理を行うため、scopeメソッドにわたってくる事は通常無いため、との事です。


Merge pull request #19683 from tristang/require-option-for-counter-cache

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

has_many associationに、counter_cacheオプションを指定出来るよう修正しています。

belongs_to associationにcounter_cacheオプションを指定してないにも関わらず、条件に一致するカラム名があった場合に自動でcounter cacheの処理が行われてしまう、 というバグがあった為、has_many associationについても、明確にオプションが設定されてないとcounter cacheの処理が行われないよう対応しています。


pull anchor extraction up

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

Mapperクラスのコンストラクタで行っていたanchorオプションの取得処理を、もっと早い段階(matchメソッド)で行うよう修正しています。

options hashの値を変化させる回数を減らす為との事。


remove anchor from mapping

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

Mappingクラスからanchor変数を削除しています。

先のコミットでoptions hashからのanchorの取得処理はMapperクラスを呼ぶ前に行われるようになった為、そもそもMappingクラスでanchorの情報を保持しておく必要性がなくった為、削除したとの事です。


remove as

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

Mappingクラスからas変数を削除しています。

options hashからのasのオプションの値の取得処理はMapperクラスを呼ぶ前に行われるようになっており、Mappingクラスで情報を保持しておく必要性はなくなっている為、削除したとの事です。


pull up options_constrants extraction

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

Mapperクラスのコンストラクタで行っていたconstraintsオプションの取得処理を、もっと早い段階(matchメソッド)で行うよう修正しています。


remove default arguments that aren't used

actionpack/lib/action_dispatch/routing/route_set.rbの修正です。

add_routeメソッドの引数から、デフォルト引数を削除しています。

引数は必ず渡され、デフォルト引数が使われる事は無いため、との事です。


we already have access to the AST, so just use it

actionpack/lib/action_dispatch/routing/route_set.rbの修正です。

build_pathメソッドJourney::GTG::Builderインスタンスを生成する際、既に作成済みのASTを使用するよう修正しています。


pass anchor directly to Pattern

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

Patternクラスのコンストラクタにanchorを設定するようの引数を追加しています。

元々は、第一引数のStrexpクラスから取得していたのですが、呼び出す時点でanchorの値はわかっており、objectを経由する必要は無いのでは、という事で修正したようです。


remove Strexp

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

Journey::Router::Strexpクラスを削除しています。Strexpクラスで行っていた処理はPath::Patternクラスで行うよう修正されています。


build_path doesn't need the path variable anymore

actionpack/lib/action_dispatch/routing/route_set.rbの修正です。

build_pathメソッドから、不要なpath変数を削除しています。


Merge pull request #21225 from brooksreese/sql_is_made_up_of_statements

rails guideのActive Record Basicsの修正です。

statementsentenceにタイポしていたのを修正しています。


Fix middleware deprecation message. Related to #21172.

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

middlewareの指定Stringで指定していたのを、Classを指定するよう修正しています。

Using strings or symbols for middleware class names is deprecated. でStringでの指定はdeprecateになったので、その為の対応です。


Remove version argument in install.rb

install.rbの修正です。

引数で指定するようになっていたバージョン番号を、RAILS_VERSIONファイルから取得するように修正しています。

install.rb、修正はコミットされたものの、そもそも使用していないという事で、後ほどファイル自体削除されています。