なるようになるブログ

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

rails commit log流し読み(2017/09/23)

2017/09/23分のコミットです。

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


Prevent extra column_for for change_column_{default,null,comment}

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

ConnectionAdapters::AbstractMysqlAdapterchange_column_defaultchange_column_nullchange_column_commentメソッドで、不要なcolumn_forメソッドの呼び出しを行わないようリファクタリングを行っています。

column_forはcolumnのsql typeを取得する為に使用しているのですが、column_forメソッドはqueryを実行する為、余計なqueryを実行しないよう、一度取得した値を保持するようにし、不要な場合は呼び出しを行わないようにしています。


Ensure 1 AS one for SQL Server with calculations.

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

Calculations#build_count_subqueryメソッドでcountのsubqueryを生成するのに、1(SELECT 1となるようにしていた)を使用していたのを、FinderMethods::ONE_AS_ONE(実際の値は1 AS one)を使用するよう修正しています。SELECT 1だとSQL Serverでエラーになってしまう為との事です。


Adding legacy primary key should be compatible

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

Rails 5.1より前に作られたmigrationファイルで、typeにprimary_keyを指定した場合に、typeがintegerになるべきが、bigintになってしまうバグがあったのを修正しています。


Move integer-like primary key normalization to new_column_definition

Active Recordの修正です。

migrationファイルでtypeにprimary_keyを指定した場合の処理をTableDefinition#new_column_definitionメソッドで行うよう修正しています。

add_columnメソッドでprimary_keyを指定した場合にも正常に動作するようにする為のようです。


Make bang version work with InheritableOptions

ActiveSupport::InheritableOptionsクラスでbangバージョンのgetメソッドが動作しないバグがあったのを修正しています。