なるようになるブログ

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

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

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を返すよう修正しています。


index_name should be quoted

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

ConnectionAdapters::AbstractMysqlAdapter#remove_index_sqlメソッドでdropするindex_nameをquoteするよう修正しています。