なるようになるブログ

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

rails commit log流し読み(2015/11/02)

2015/11/02分のコミットです。

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

activerecord/CHANGELOG.md


Fix double word 'string' [ci skip]

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

assert_recognizesメソッド内のdocにstringが重複して記載されてしまっている箇所ががあったので、片方削除しています。


Update changelog for #22122

activerecord/CHANGELOG.mdの修正です。

migrationを実行する際、advisory locksを使用してmigrationが同時に実行されないよう対応を追加した、Use advisory locks to prevent concurrent migrations についてCHANGELOGに追記しています。


remove unnecessary .sass-cache from plugin's gitignore template

railties/lib/rails/generators/rails/plugin/templates/gitignoreの修正です。

pluginのgitignoreから、もう使用されていない.sass-cacheディレクトリを削除しています。


Merge pull request #22131 from yui-knk/move_test_to_inheritance_test

activerecord/test/cases/base_test.rbactiverecord/test/cases/inheritance_test.rbの修正です。

Inheritance moduleに定義されているメソッド(abstract_class?descends_from_active_record?compute_type)についてのテストを、base_test.rbからinheritance_test.rbに移動しています。


Add CHANGELOG entry for #22125 [ci skip]

activerecord/CHANGELOG.mdの修正です。

left_outer_joinsのaliasとしてleft_joinsを追加した、Alias left_joins to left_outer_joinsの対応について、CHANGELOGに追記しています。


Remove DEFAULT_CHARSET and DEFAULT_COLLATION in MySQLDatabaseTasks

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

MySQLDatabaseTasksから、DEFAULT_CHARSETDEFAULT_COLLATIONを削除しています。

それぞれ、値が定義されていなかった場合にutf8utf8_unicode_ciをデフォルトとして使用するようになっていたのですが、utf8_unicode_ciが同一視されてしまう、という挙動をしており、日本語を使用した場合に予期せぬ挙動をしてしまう、という問題があった為勝手にデフォルトを設定しないよう削除しています。

参考:ActiveRecordでデフォルトの照合順序を変更する - Qiita


Allow bigint with default nil for avoiding auto increment primary key

activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rbactiverecord/lib/active_record/connection_adapters/mysql/schema_dumper.rbの修正です。

bigintのdefaultにnilを指定出来るよう対応しています。


Define sanitize_sql_for_order for AR and use it inside preprocess_order_args

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

ORDER句に指定する用のSQLを生成する為のActiveRecord::Sanitization.sanitize_sql_for_orderメソッドを追加しています。

docから。

sanitize_sql_for_order(["field(id, ?)", [1,3,2]])
# => "field(id, 1,3,2)"

sanitize_sql_for_order("id ASC")
# => "id ASC"

ActiveRecord::QueryMethods#orderメソッドの引数にArrayを渡した場合にサニタイズ処理を行うよう修正した、Merge pull request #13008 from ktheory/sanitize_orderで使用した処理をメソッドに切りだし形になります。


Make db:migrate:status to render 1_some.rb format migrate files.

activerecord/lib/active_record/migration.rbactiverecord/lib/active_record/railties/databases.rakeの修正です。

db:migrate:statusタスクが、不正なマイグレーションファイルについても正しくマイグレーション名を表示するよう修正しています。

不正なマイグレーションファイルではなく、マイグレーションIDが日時のフォーマットではないものについても、db:migrate:statusタスクで正しくマイグレーション名を表示するよう修正、が正しいようです。

マイグレーションIDが日時のフォーマットでないものも、元々マイグレーションファイルとしては正しく認識するとの事です。

CHANGELOGより。

* 1_valid_people_have_last_names.rb
* 20150819202140_irreversible_migration.rb
* 20150823202140_add_admin_flag_to_users.rb
* 20150823202141_migration_tests.rb
* 2_we_need_reminders.rb
* 3_innocent_jointable.rb

上記のようなmigrationファイルがあった場合、db:migrate:statusの結果が以下のように変わっています。

# Before:

     Status   Migration ID    Migration Name
    --------------------------------------------------
       up     001             ********** NO FILE **********
       up     002             ********** NO FILE **********
       up     003             ********** NO FILE **********
       up     20150819202140  Irreversible migration
       up     20150823202140  Add admin flag to users
       up     20150823202141  Migration tests

# After:

     Status   Migration ID    Migration Name
    --------------------------------------------------
       up     001             Valid people have last names
       up     002             We need reminders
       up     003             Innocent jointable
       up     20150819202140  Irreversible migration
       up     20150823202140  Add admin flag to users
       up     20150823202141  Migration tests

Merge pull request #22142 from r11runner/query-guide-first-last-default-scope

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

firstlastメソッドについて説明している箇所に、それぞれdefault scopeの影響を受ける旨説明を追加しています。


Fix test_database_created_by_root of mysql

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

test_database_created_by_rootで、databaseを作る際に、:charset => 'utf8', :collation => 'utf8_unicode_ci'を指定していたのを削除しています。