2017/09/22分のコミットです。
CHANGELOGへの追加はありませんでした。
Use TOPLEVEL_BINDING in rails runner command
railties/lib/rails/commands/runner/runner_command.rbの修正です。
Command::RunnerCommand#performメソッドでevalを実行する際に、bind引数にTOPLEVEL_BINDINGを指定するよう修正しています。
- eval(code_or_file, binding, __FILE__, __LINE__) + eval(code_or_file, TOPLEVEL_BINDING, __FILE__, __LINE__)
Kernel.#bindingで生成されるBinding オブジェクトだとscopeがlocal scopeになり、期待通りのconstantが呼ばれない可能性がある(RunnerCommand#performメソッドが定義されているscopeに、runnerで実行したいconstantと同じ名前のconstantが存在していた場合に、runnerで実行したいconstantが呼ばれない)為。
Implement change_table_comment and change_column_comment for MySql Adapter
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。
ConnectionAdapters::AbstractMysqlAdapterクラスにchange_table_commentメソッド及びchange_column_commentメソッドを定義しています。table及びcolumnのコメントを変更出来るようにする為。
migrationでcommentを使用出来るようにしたPRでは、何故かpostgres adapterにだけ該当のメソッドが実装されていてmysql adapterの方は対応が漏れていたようです。
Return nil if table comment is blank
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。
ConnectionAdapters::AbstractMysqlAdapter#table_commentメソッドでcommentが空の場合nilを返すよう修正しています。
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。
ConnectionAdapters::AbstractMysqlAdapter#remove_index_sqlメソッドでdropするindex_nameをquoteするよう修正しています。