なるようになるブログ

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

rails commit log流し読み(2017/05/14)

2017/05/14分のコミットです。

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

railties/CHANGELOG.md


Merge pull request #29010 from y-yagi/fix_28988

railties/lib/rails/commands/console/console_command.rbの修正です。

Rails 5.0まではrails consoleコマンドからirbオプションを指定出来た(./bin/rails c -- --verboseのように出来た)のが、5.1で出来なくなっていたのを再度指定出来るよう修正しています。


Update system test runner docs

railties/lib/rails/commands/help/USAGErailties/lib/rails/test_unit/testing.rakeの修正です。

rails help及びrakeのタスク一覧にsystem test を実行する為のタスク(test:system)を表示するよう修正しています。


Use a more realistic use-case for system test generator

rails guideのA Guide to Testing Rails Applicationsの修正です。

System Testing項のexampleコードを実際に生成されるコードに修正しています。


Clarify documentation for system test arguments

rails guideのA Guide to Testing Rails Applicationsの修正です。

Changing the default settingsの項、driven_byメソッドのusingオプションはSeleniumの場合のみ使用可能である旨説明を修正しています。

rails commit log流し読み(2017/05/13)

2017/05/13分のコミットです。

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


Maintain original encoding from path

actionpack/lib/action_dispatch/journey/router/utils.rbの修正です。

Utils.normalize_pathメソッドでpathを生成する際に、引数のStringのencodingを保持した値を返すよう修正しています。


[ci skip] Mailer fixtures in Testing guide.

rails guideのA Guide to Testing Rails Applicationsの修正です。

Testing Your Mailersの項で、mailer generatorがテスト用のfixtureを作成する旨説明が記載されていたのですが、実際は作成されない為、その旨説明を修正しています。

rails commit log流し読み(2017/05/12)

2017/05/12分のコミットです。

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


Merge pull request #29043 from kamipo/dont_eager_loading_if_unneeded_for_exists

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

FinderMethods#exists?メソッドで不要なeager load処理を行わないよう修正しています。


Merge pull request #29040 from eugeneius/parameters_delete_block

actionpack/lib/action_controller/metal/strong_parameters.rbの修正です。

ActionController::Parameters#deleteメソッドに、Hash#deleteメソッド同様に引数に結果を返すようのblockを指定出来るよう修正してます。

元々Rails 4.2系までは指定出来るようになっていたのですが、Rails 5.0で誤って指定出来なくなってしまっていて、再度指定出来るよう修正しています。


Merge pull request #29034 from peterjm/handle_loops_in_exception_handling

activesupport/lib/active_support/rescuable.rbの修正です。

Rescuable#rescue_with_handlerメソッドで、cause chainに既に発生したExceptionが含まれていた場合、causeの取得処理を停止するよう修正しています。

      def rescue_with_handler(exception, object: self)
+      def rescue_with_handler(exception, object: self, visited_exceptions: [])
+        visited_exceptions << exception
+
         if handler = handler_for_rescue(exception, object: object)
           handler.call exception
           exception
         elsif exception
-          rescue_with_handler(exception.cause, object: object)
+          if visited_exceptions.include?(exception.cause)
+            nil
+          else
+            rescue_with_handler(exception.cause, object: object, visited_exceptions: visited_exceptions)
+          end

上記のような場合に、Ruby 2.3系だとSystemStackErrorが発生してしまう為との事です。なお、Ruby 2.4.1では左記問題は発生しません。


Merge pull request #29029 from timolehto/master

railties/lib/rails/test_unit/railtie.rbの修正です。

rails -Trails -Dのようにrake task一覧を表示するコマンドを実行した場合に、RAILS_ENVtestに設定されてしまっていたのを、development`が設定されるよう修正しています。


Merge pull request #28919 from meinac/fix_ambigious_exception_message_of_select_query_method

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

Active Recordのselectメソッドの引数にフィールドを指定しなかった場合のエラーメッセージで、メソッド名を明確に表示するよう修正しています。

-      raise ArgumentError, "Call this with at least one field" if fields.empty?
+      raise ArgumentError, "Call `select' with at least one field" if fields.empty?

rails commit log流し読み(2017/05/11)

2017/05/11分のコミットです。

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


Fix a typo in guide [ci skip]

rails guideのWorking with JavaScript in Railsの修正です。

Dealing with Ajax eventsの項でexampleexempleにタイポしていたのを修正しています。


Defer loading each DB Tasks class from AR DatabaseTasks

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

DB task用のクラスをの読み込み処理を遅延ロードするよう修正しています。

-      register_task(/mysql/,        ActiveRecord::Tasks::MySQLDatabaseTasks)
-      register_task(/postgresql/,   ActiveRecord::Tasks::PostgreSQLDatabaseTasks)
-      register_task(/sqlite/,       ActiveRecord::Tasks::SQLiteDatabaseTasks)
+      register_task(/mysql/,        'ActiveRecord::Tasks::MySQLDatabaseTasks')
+      register_task(/postgresql/,   'ActiveRecord::Tasks::PostgreSQLDatabaseTasks')
+      register_task(/sqlite/,       'ActiveRecord::Tasks::SQLiteDatabaseTasks')

アプリで使用しているDB以外のクラスの読み込みを行わないようにする為。

rails commit log流し読み(2017/05/10)

2017/05/10分のコミットです。

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


Allow to receive arbitrary arguments in aggregated_results

railties/lib/rails/test_unit/minitest_plugin.rbの修正です。

Minitest::SuppressedSummaryReporter#aggregated_resultsメソッドに任意の引数を指定出来るよう修正しています。

-    def aggregated_results
+    def aggregated_results(*)
       super unless options[:output_inline]
     end

minitest側(SuppressedSummaryReporterの親クラスであるSummaryReporter)でaggregated_resultsに引数が追加されており、オーバーライドしているこちらのメソッドでも引数を受け取れるようにするために対応しています。

参考:- Write aggregated_results directly to the IO object to avoid mixed e…

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

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

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


Merge pull request #28240 from kreintjes/fix/autoloading-sti-guide

rails guideのAutoloading and Reloading Constantsの修正です。

Autoloading and STIの項、 STIを使用している場合のsubclassesのload方法についての説明に誤りがあったのを修正しています。


Merge pull request #28995 from jcoyne/update_capybara

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

Capybaraのバージョンロックを緩めて、bundle updateでminor releaseを含められるよう修正しています。

-  gem 'capybara', '~> 2.13.0'
+  gem 'capybara', '~> 2.13'

rails commit log流し読み(2017/05/08)

2017/05/08分のコミットです。

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


Fix link to assert_nothing_raised doc [ci skip]

rails guideのA Guide to Testing Rails Applicationsの修正です。

assert_nothing_raisedメソッドのdocへのリンクが誤っていたのを修正しています。