なるようになるブログ

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

rails commit log流し読み(2016/08/17)

2016/08/17分のコミットです。

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

activejob/CHANGELOG.md

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Merge pull request #25863 from mechanicles/remove-duplicate-test

activesupport/test/caching_test.rbの修正です。

重複していたcacheのkeyが長い値の場合のテストを削除しています。


Yield the job instance so you have access to things like job.arguments on the custom logic after retries fail

activejob/lib/active_job/exceptions.rbの修正です。

Active Jobのretry_onメソッドにblockを渡した際に、blockにjobのインスタンスを渡すよう修正しています。

class RemoteServiceJob < ActiveJob::Base
  retry_on(YetAnotherCustomAppException) do |job, exception|
    job #=> RemoteServiceJob
    ExceptionNotifier.caught(exception)
  end
end

Merge pull request #26000 from kamipo/remove_sanitize

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

ActiveRecord::Sanitizationmoduleにsanitizeという引数をsanitizeする為のメソッドがあったのですが、やっていることはconnection.quoteを呼び出すだけ、かつprivate APIなので、直接connection.quoteを呼べば良いだろうという事でsanitizeメソッドを削除しています。


Merge pull request #25671 from kamipo/dont_handle_as_associated_predicate_if_table_has_column

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

対象のtableにカラムが無い場合、associated predicate の処理を行わないよう修正しています。tableにカラムが無いのにassociated predicateの処理を行おうとすると、不正なSQLが生成されてしまい、結果ActiveRecord::StatementInvalidがraiseされてしまうので、それを避ける為のようです。


Merge pull request #26121 from MaxLap/fix_count_with_left_joins

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

left_joins + countを行った際に正しく結果が取得出来ないバグがあったのを修正しています。 arel nodeだとeager_loadingした際に駄目なんですねえ。


refactor CommandsTasks

railtiesの修正です。

Rails::CommandsTasks`Rails::Engine::CommandsTasksで共通の処理をmoduleに切り出しています。


Merge pull request #26072 from kamipo/extract_case_sensitive_handler

Active Recordの修正です。

ActiveRecord::Validations::UniquenessValidator#build_relationメソッド内でやっていたArel ASTの生成処理を、別クラス(ActiveRecord::PredicateBuilder::CaseSensitiveHandler)に切り出しています。


Merge pull request #26037 from monmonmon/master

activerecord/lib/active_record/scoping/named.rbの修正です。

ActiveRecord::Scoping::Named#valid_scope_name?メソッドでloggerを使用する前に、loggerのインスタンスが存在するかのチェック処理を追加しています。


Merge pull request #26021 from kamipo/finder_bang_method_should_call_non_bang_method

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

bang付きのfinderメソッド(first!last!等)からbang付きでないメソッド(firtlast等)を呼び出すよう修正しています。

dirty targetの場合正しく処理を行うようにする為、との事です。


Start documenting ActionController::TestCase again

actionpack/lib/action_controller/test_case.rbのdocの修正です。

ActionController::TestCaseのdocを、再度表示するよう修正しています。

ActionController::TestCaserails本体から切り出される予定がある為、Rails 5.0.0リリース時点ではdocが表示されなくなったのですが、request method(getpost等)の引数のフォーマットが変わった(キーワード引数を使用するようになった)為、ドキュメントが無いと既存のコードの修正の際に問題があるだろうという事で、再度表示するようにしたようです。


Merge pull request #26009 from kamipo/fix_inconsistent_finder_methods_signature

activerecord/lib/active_record/associations/collection_association.rbactiverecord/lib/active_record/associations/collection_proxy.rbの修正です。

CollectionAssociationCollectionProxyでfinderメソッドの引数が異なっていたので、finderメソッドの引数を合わせるよう修正しています。


Merge pull request #26002 from kamipo/sql_for_insert_should_be_called_inside_exec_insert

activerecord/lib/active_record/connection_adapters/abstract/database_statements.rbactiverecord/lib/active_record/connection_adapters/postgresql/database_statements.rbの修正です。

ActiveRecord::ConnectionAdapters::DatabaseStatements#exec_insertメソッドの中でsql_for_insertを呼び出すよう修正しています。

use_insert_returning?がtrueの場合に、exec_insertはlast inserted idを返さない為、正しくlast inserted idを取得出来るようにする為に、sql_for_insertを呼び出すようにしたようです。


Merge pull request #25987 from aquajach/master

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

reverseをサポートしているかどうかのチェック処理を修正しています

      def does_not_support_reverse?(order)
         # Uses SQL function with multiple arguments.
-        /\([^()]*,[^()]*\)/.match?(order)  ||
+        (order.include?(',') && order.split(',').find { |section| section.count('(') != section.count(')')})   ||
         # Uses "nulls first" like construction.
         /nulls (first|last)\Z/i.match?(order)
       end

既存の処理ではconcat(author_name, lower(title))のような括弧がネストしている場合に正しくチェックできていなかった為。


Fix indentation

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

先の対応でインデントがおかしくなってしまっている箇所があったのを修正しています。


Merge pull request #25976 from kamipo/pluck_uses_loaded_target

activerecord/lib/active_record/associations/collection_proxy.rbactiverecord/lib/active_record/relation/calculations.rbの修正です。

pluckメソッドで、recordsをload済みの場合、load済みのrecordsを使用するよう修正しています。


Fix link in Rails 5.0 Release Note [ci skip]

rails guideのRuby on Rails 5.0 Release Notesの修正です。

https://github.com/rails/rails/pull/18335 へのリンクがおかしくなってしまっていたのを修正しています。


Merge pull request #25628 from ysksn/options

Active Supportの修正です。

ActiveSupport::Cache::Strategy::LocalCache::LocalStore#clear、及び、ActiveSupport::Cache::Strategy::LocalCache#clearから使用していないoptions引数を削除しています。


Merge pull request #25396 from kamipo/fix_error_message_for_out_of_range_integer_value

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

migrationのlimitに不正な値を指定した場合に出力するエラーメッセージに、decimalを使用する旨メッセージを追加しています。

PostgreSQLの方では該当のエラーメッセージを既に出すようになっており、挙動を合わせる為MySQLの方でも出すよう修正しています。


Fix diffrent naming in getting_started.md

rails guideのGetting Started with Railsの修正です。

Updating Articlesの項にあるexampleテンプレートのh1タグの値が実際に生成される値と異なっていたのを修正しています。


Fix #26187

rails guideのGetting Started with Railsの修正です。

Getting Up and Runningの項にあるconfig/routes.rbのexampleに、get 'welcome/index'を追加しています。

このguideを上から順になぞっていった場合、get 'welcome/index'がある状態になっているのが正しい状態の為。