2016/07/20分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Fixes multi-parameter attributes conversion with invalid params.
- Support calling the method
merge
inscope
's lambda.
Fix ActionView::Helpers#current_page? with issue in https://github.com/rails/rails/issues/19472
actionview/lib/action_view/helpers/url_helper.rb
の修正です。
ActionView::Helpers#current_page?
メソッドがtrailing slash付きのURLのチェックを正しく行えないバグがあったのを修正しています。
.rubocop.yml
の修正です。
Lint/EndAlignment
のルールを追加しています。
Merge pull request #25868 from kamipo/fix_payload_class_name_to_spec_name
Active Recordの修正です。
connection接続用に使用するpayloadデータの名前をpayload[:class_name]
からpayload[:spec_name]
に修正しています。
Refactor connection handlerでconnection管理はclassではなくspecの名前で行われるようになったので、それに合わせて修正しています。
Merge pull request #25869 from kamipo/specificiation_id_was_renamed_to_spec_name
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
の修正です。
#retrieve_connection
でraiseするエラーのエラーメッセージに、不要なid
という文字が残ってしまっていたのを削除しています。
Merge pull request #25822 from mechanicles/clear-local-cache-on-invalid-parameters-error
activesupport/test/caching_test.rb
の修正です。
Middlewareでinvalid parameters errorが起きた際に、local cacheがクリアされる事を確認するテストを追加しています。
activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb
の修正です。
time_zone_aware_attributes
がtrue、かつ、multi-parameter attributesに不正な値を渡した場合に、ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter#set_time_zone_without_conversion
でexceptionがraiseされてしまうバグがあったのを修正しています。
不正なパラメータが渡された場合、#set_time_zone_without_conversion
の引数がnilになってしまうのですが、#set_time_zone_without_conversion
の中で引数がnilの場合のケアが不足していた為、エラーになっていたので、nilの場合のケアを追加し対応しています。
Merge pull request #25393 from gsamokovarov/introduce-assert-changes
activesupport/lib/active_support/testing/assertions.rb
の修正です。
ActiveSupport::Testing::Assertions
moduleに、assert_changes
、assert_no_changes
assertionを追加しています。名前の通りで、特定の項目が指定した値に変わった事を確認する事が出来るassertionです。
例。
assert_changes -> { Status.all_good? } do post :create, params: { status: { ok: false } } end
上記の例だと、post :create, params: { status: { ok: false } }
を実行した結果、Status.all_good?
がtrueになればsuccess、という事になります。変化後の値は、to
オプションで任意の値を指定できます。
user = User.start_registration assert_changes 'user.token', to: /\w{32}/ do user.finish_registration end
また、from
オプションを指定する事で、変化前の値についても指定可能です。
assert_changes :@object, from: nil, to: :foo do @object = :foo end
assert_no_changes
は、特定の項目の値が変わらなければOKとなっています。
assert_no_changes 'Status.all_good?' do post :create, params: { status: { ok: true } } end
Merge pull request #25828 from bogdanvlviv/ref_default_sequence_name
activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
の修正です。
ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements#default_sequence_name
のpk
引数のデフォルトにid
を指定するよう修正しています。
元々のデフォルトはnil
だったのですが、メソッド内で値がnil
だった場合、id
を使用するようになっていた為、そもそもデフォルト自体をid
にしてしまっています。
Merge pull request #25849 from suginoy/fix_merge_in_scope
activerecord/lib/active_record/querying.rb
の修正です。
scope
の中で最初にmerge
メソッドをよぶとNoMethodError
が発生してしまうバグがあったのを修正しています。
ActiveRecord::Querying
moduleがdelegateするメソッドの一覧に:merge
が無かった為エラーになっていました。
Merge pull request #25823 from mechanicles/missing-memory-store-tests
activesupport/test/caching_test.rb
の修正です。
cacheにmemory storeを使用した場合のテストを追加しています。
Merge pull request #25888 from kamipo/use_conn_to_sql_for_construct_sql
activerecord/lib/active_record/relation.rb
の修正です。
ActiveRecord::Relation#to_sql
メソッドでSQLを生成するのに独自ロジックでやっていたのを、connectionのto_sql
メソッドを使用するよう修正しています。
Merge pull request #25889 from kamipo/do_not_dup_binds_in_to_sql
activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
の修正です。
ActiveRecord::ConnectionAdapters::DatabaseStatements#to_sql
メソッドでcompile
メソッドにbindsを渡す際、dupした値を渡していたのを、値をそのまま渡すよう修正しています。
- collected.compile(binds.dup, self) + collected.compile(binds, self)
先の処理で引数自身の状態を変えるような処理は無い為、との事です。
Active Recordの修正です。
composite primary keyを使用した場合に出力エラーメッセージを出力する箇所をActiveRecord::ConnectionAdapters::SchemaStatements#primary_key
からActiveRecord::AttributeMethods::PrimaryKey#get_primary_key
に移動しています。
schemaのdump / create処理ではcomposite primary keyはサポートしている為、connection adapterでwarningを表示するのは不適切だろう、との事で移動したようです。
また、合わせて、has_and_belongs_to_many
を使用している場合に不要なwarningが出てしまっているケースがあったのを対応しています。
Merge pull request #25438 from prathamesh-sonpatki/rm-session-store-initializer
railtiesの修正です。
initializerで行っていたデフォルトのsession storeの設定を、railties内部で行うよう修正しています。
Add exists?
and update_all
to CollectionProxy
for respects an association scope
ActiveRecord::Associations::CollectionProxy
クラスがdelegateするメソッドの一覧に、:exists?
、:update_all
を追加しています。 association scopeで左記メソッドが正しく動作するようにする為、との事です。
Fix explain logging with binds
activerecord/lib/active_record/explain.rb
の修正です。
ActiveRecord::Explain#exec_explain
でbindsの値が正しく表示されなくなっていたのを修正しています。 Rails 5.0.0でbinds
がquery attributeのarrayに変わったのですが、その対応が入っていなかった為との事です。
Oracle TIMESTAMP sql type is associated with Rails DateTime
type now
activerecord/test/cases/migration/column_attributes_test.rb
、
activerecord/test/models/topic.rb
の修正です。
Orcale adapterでdeprecateになったset_date_columns
を使用しないよう修正、及びTIMESTAMP型をRailsのDateType
として扱うようにした事でコケるようになってしまっていたテストを修正しています。