なるようになるブログ

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

rails commit log流し読み(2015/12/14)

2015/12/14分のコミットです。

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

railties/CHANGELOG.md


Update web-console to 3.0.0

railties/lib/rails/generators/rails/app/templates/Gemfileの修正です。

web-console 3.0.0がリリースされたという事で、新規にrailsアプリを作成した際に使用するweb-consoleのバージョンを3.0に更新しています。


let config.file_watcher be the way to enable the evented file watcher

railtiesの修正です。ファイルの更新監視処に指定するクラスをconfigで明示的に指定出来るよう、デフォルトで生成されるdevelopment.rbにコメント行を追加しています。

# development.rb
+  # Use an evented file watcher to asynchronously detect changes in source code,
+  # routes, locales, etc. This feature depends on the listen gem.
+  # config.file_watcher = ActiveSupport::EventedFileUpdateChecker

デフォルトでは従来通りActiveSupport::FileUpdateChecker(pollingで更新検知を実施)を使用するようになっており、上記コメントをコメントアウトすれば新規に作成されたevent baseのクラス(ActiveSupport::EventedFileUpdateChecker)を使用するようになります。デフォルトでは使用しないようにしたんですねえ。


lazy load listen in core

Gemfile, activesupport/lib/active_support/evented_file_update_checker.rbの修正です。

listen gemを必要になった際にrequireするよう修正しています。


Prevent a 500 in the default controller scaffold

railties/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rbrailties/lib/rails/generators/rails/scaffold_controller/templates/controller.rbの修正です。

attributeを指定せずにscaffoldした場合に、生成されたcontrollerを実行するとparamterのsanitze処理でエラー(#assign_attributesでArgumentErrorになる)になってしまうバグがあったのを修正しています。

-      params[:<%= singular_table_name %>]
+      params.fetch(:<%= singular_table_name %>, {})

#[]だと該当のparameterが無い場合nilが返ってしまうので、fetchを使って、該当のparameterが無い場合は空のHashを返すようにして対応しています。


Nodoc Rails command.

railties/lib/rails/command.rbのdocの修正です。

Rails::Commandクラスに:nodoc:を指定しています。まだdocが整っておらず、publicに出来る状態じゃない為、との事です。


Merge branch 'rails-rake-proxy'

railtiesの修正です。

railsにrakeコマンドをproxyする為の仕組みを追加しています。これにより、rakeタスクをrailsコマンド経由で実行できます。

$ ./bin/rails db:migrate
== 20151213232917 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0009s
== 20151213232917 CreateUsers: migrated (0.0009s) =============================

$ ./bin/rails stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |   LOC  | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |     79 |     53 |       2 |       9 |   4 |     3 |
| Helpers              |      4 |      4 |       0 |       0 |   0 |     0 |
| Jobs                 |      2 |      2 |       1 |       0 |   0 |     0 |
| Models               |      2 |      2 |       1 |       0 |   0 |     0 |
| Mailers              |      0 |      0 |       0 |       0 |   0 |     0 |
| Javascripts          |     19 |      0 |       0 |       0 |   0 |     0 |
| Libraries            |      0 |      0 |       0 |       0 |   0 |     0 |
| Tasks                |      0 |      0 |       0 |       0 |   0 |     0 |
| Controller tests     |     48 |     38 |       1 |       7 |   7 |     3 |
| Helper tests         |      0 |      0 |       0 |       0 |   0 |     0 |
| Model tests          |      7 |      3 |       1 |       0 |   0 |     0 |
| Mailer tests         |      0 |      0 |       0 |       0 |   0 |     0 |
| Integration tests    |      0 |      0 |       0 |       0 |   0 |     0 |
+----------------------+--------+--------+---------+---------+-----+-------+
| Total                |    161 |    102 |       6 |      16 |   2 |     4 |
+----------------------+--------+--------+---------+---------+-----+-------+
  Code LOC: 61     Test LOC: 41     Code to Test Ratio: 1:0.7

railsとrake2つのコマンドがあるのは紛らわしいからrailsコマンドに統一しよう、という提案(Having both rails and rake commands is confusing: Just use rails as the command router. · Issue #18878 · rails/rails)があり、その対応です。

なお、rakeタスクをrailsコマンド経由で呼び出しているだけで、rakeタスク自体が無くなった訳ではないので、今のところ今まで通りrakeコマンド経由でもタスクの実行は出来るようになっています。


Merge pull request #22569 from seuros/remove-test-case

railtiesの修正です。

controllerのテストで使用するクラスをActionController::TestCaseからActionDispatch::IntegrationTestに修正しています。

先日、docだけ先に修正(Remove ActionController::TestCase from documentation)された対応の関連で、各generatorsが生成するテスト用のファイルでActionDispatch::IntegrationTestを使用するよう修正、及び既存のテストでActionDispatch::IntegrationTestを使用するよう修正しています。

が、既存のテストを壊してしまった箇所があった為、後ほどrevertされています。


Merge pull request #22571 from mtsmfm/travel-back

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

touch処理のテストで、travelで時刻を固定した後で値を元に戻していなかったので、時刻を固定したい処理をブロックで渡すようにし、時刻を固定する範囲を狭くするよう修正しています。

-    travel 5.seconds
-
-    Node.create! parent: nodes(:child_one_of_a), tree: trees(:root)
+    travel 5.seconds do
+      Node.create! parent: nodes(:child_one_of_a), tree: trees(:root)
+    end

Revert "Merge pull request #22569 from seuros/remove-test-case"

Merge pull request #22569 from seuros/remove-test-caseをrevertしています。テストを壊してしまった為。


Merge pull request #22209 from yui-knk/add_test_sanitize_sql_array_handles_named_bind_variables

activerecord/lib/active_record/sanitization.rbのdoc及び activerecord/test/cases/sanitize_test.rbの修正です。

#sanitize_sql_arrayメソッドにnamed bind variablesを使用した場合のテストの追加、及び、sanitize_sql_for_conditions,sanitize_sql_for_assignment, sanitize_sql_arrayメソッドにnamed bind variablesを使用した場合のexampleをdocに追加しています。


Merge pull request #22463 from tjblonsk/add_bug_report_to_contributing_md

rails guideのHow to contribute to Ruby on Railsの修正です。

バグレポートの仕方についての説明をguideに追加しています。ほぼ丸々書き換えをしている感じです。