なるようになるブログ

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

rails commit log流し読み(2016/02/12)

2016/02/12分のコミットです。

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

activerecord/CHANGELOG.md


Ensure prepared statement caching still occurs with Adequate Record

Active Recordの修正です。

Adequate Recordで行っているSQLについては、必ずプリペアドステートメントをキャッシュするよう修正しています。

Rails 5ではプリペアドステートメントをキャッシュする対象を限定するようにしており、その影響で、Adequate Recordで行っている処理もキャッシュされないようになってしまっていたようです。その影響で、PostgreSQLfind_byした場合にperformance regressionが発生してしまっていた為、必ずキャッシュするよう修正したとの事です。


Merge pull request #23581 from diego-silva/uniqueness-validator-pk-fix

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

uniqueness validatorで、primary keyの値が変わった場合にuniquenessのチェックを更新前のprimary keyの値を除いて行うよう修正しています。

-            relation = relation.where.not(finder_class.primary_key => record.id)
+            relation = relation.where.not(finder_class.primary_key => record.id_was)

更新後の値はまだDBに保存されていないので、更新前の値で見ないと更新しようとしているデータが uniqueness validationにひっかかってしまう為。


Merge pull request #18109 from k0kubun/unscoped-joins

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

unscoped blockにjoinを使用出来るよう修正しています。

Model.unscoped { Foo.joins(:model) }

make the logger method always return something

actionview/lib/action_view/digestor.rbの修正です。

loggerメソッドで、ActionView::Base.loggernilだった場合、何も出力処理を行わないNullLoggerクラスを返すよう修正しています。

ログ出力処理から、loggernilの場合の処理(元はtryを使用)を取り除く為、との事です。


follow indentation rules

actionview/lib/action_view/digestor.rbの修正です。

先に追加されたNullLoggerクラスのインデントを調整しています。


Oops. :cut:

actionview/lib/action_view/digestor.rbの修正です。

先のインデント調整の際に、不要なデバッグ処理を誤って追加してしまった為、まとめて削除しています。


Don't capture the MissingTemplate exception.

actionview/lib/action_view/digestor.rbの修正です。

digestメソッドActionView::MissingTemplateをrescueの処理から、不要な例外オブジェクト変数を削除しています。

follow indentation rulesで誤って追加されてしまったもよう。


Document the upgrade process

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

Railsのバージョンアップの仕方について説明した、The Upgrade Process項を追加しています。


Make parsed_body extract parser from the content type.

actionpack/lib/action_dispatch/testing/integration.rbactionpack/lib/action_dispatch/testing/test_response.rbの修正です。

integration test用のResponseクラスのparsed_bodyメソッドを、asオプションを指定しない場合でも使用出来るよう修正しています。

asオプションが指定されてない場合は、requestmime typeから使用するparserを決定するようになっています。


[ci skip] Fix syntax error in CHANGELOG example.

actionpack/CHANGELOG.mdの修正です。

Add parsed_body to spare writing out parsing routines.の対応について記載したentry内のexampleコードが、syntax errorになってしまうコードだったのを修正しています。


[ci skip] Mention parsed_body in docs.

actionpack/lib/action_dispatch/testing/integration.rbのdocの修正です。

response_parser変数について説明している箇所の、言い回しの修正を行っています。


Memoize parsed_body.

actionpack/lib/action_dispatch/testing/test_response.rbの修正です。

parsed_bodyの値をメモ化していたのを、メモ化しないよう修正しています。

コミットログだと、メモ化した、という風になっているのですが、実際はメモ化やめてて何だろうと思ったのですが、どうやらメモ化は間違えて消してしまったようで、後ほど(Add fixes accidentally removed. · rails/rails@da1fbb9)再度メモ化するよう戻しています。


Merge pull request #23546 from maclover7/cable-readme-update

actioncable/README.mdの修正です。

グラマーの修正、pubsubはRedisのみが使用する前提になっていたのを、Redis以外のadapterについての説明を追加、等を行っています。


Improve wording in documentation change

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

The Upgrade Process項の言い回し、グラマーの修正を行っています。


remove detail initialization metaprogramming

actionview/lib/action_view/lookup_context.rbの修正です。

viewpathのdetailの初期化処理をmodule_evalを使用して行っていたのを、通常通りにメソッドを定義して行うよう修正しています。

初期化処理はボトルネックにはなっていないようである、事、かつ通常のメソッドを使用した方が読みやすい為、との事です。


Fix numbers of steps to upgrade Rails [ci skip]

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

Document the upgrade processで追加されたThe Upgrade Process内の作業ステップで、全て同じ数字が記載されていたのを、連番を記載するよう修正しています。

-1. Move to the latest patch version after your current version
-1. Fix tests and deprecated features
-1. Move to the latest patch version of the next minor version
+2. Move to the latest patch version after your current version
+3. Fix tests and deprecated features
+4. Move to the latest patch version of the next minor version

Rails guideの生成にはredcarpetを使用しており、redcarpetでは同じ数字を設定も大丈夫(表示の際に連番になって表示される)なはずなので、元のままでも大丈夫だと思うんですけどねえ…。


- Fixed and removed long arguments to rake routes

Action Pack / railtiesの修正です。

bin/rails routesからロングオプション(--grep及び--controller)についての処理、及び説明を削除しています。

routesはrake taskで実装されており、rake taskにはロングオプションはそのまま渡せなく、ショートオプション(-g / -c)があるので、ロングオプションは無くても大丈夫良いだろう、という事で削除されたようです。


Update RELEASING_RAILS.md

RELEASING_RAILS.mdの修正です。

Contact the security teamの項、security teamのメンバーがKoz or tenderloveになっていたのを、tenderlove or rafaelfrancaに修正しています。