なるようになるブログ

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

rails commit log流し読み(2017/07/18)

2017/07/18分のコミットです。

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

activerecord/CHANGELOG.md

railties/CHANGELOG.md


Allow multiparameter assigned attributes to be used with text_field

Active Model, Active Recordの修正です。

multi-parameter assignmentで構築された値(e.g. written_on(1i)written_on(2i)written_on(3i))をtext_fieldhidden_fieldで使用出来るよう(使用した値をARで受け取れるよう)修正しています。


Merge pull request #27662 from nhorton/patch-1

rails guideのRails Routing from the Outside Inの修正です。

Adding Member Routesの項にあるroutes helperのexampleで、メソッド名に誤りがあったのを修正しています。


Scrub the invalid paramter value before using it in the error

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

paramsのencodingが不正な値だった場合のエラーの、エラーメッセージの修正、及び、対象のparamsscrubした値をメッセージに含むよう修正しています。

-            raise Rack::Utils::InvalidParameterError, "Non UTF-8 value: #{params}"
+            raise Rack::Utils::InvalidParameterError, "Invalid encoding for parameter: #{params.scrub}"

不正なencodingが含まれたままエラーメッセージを生成しようとすると、エラーメッセージ生成の際に違うEncodingエラーが発生してしまう為、scrubメソッドを使用して不正なバイト列を削除しています。


Add bootsnap to default Gemfile

railtiesの修正です。

デフォルトで生成されるGemfilebootsnapを含むよう修正しています。

config/boot.rbでbootsnapのsetup処理がrequireされるようになっています。


Merge pull request #29788 from kamipo/remove_unused_mutex_m

activemodel/lib/active_model/attribute_methods.rbの修正です。

不要なmutex_mのrequireを削除しています。


Persistence#delete should not be affected by scoping

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

Persistence#deleteメソッドがscopingの影響を受け無いよう修正しています。


Fix where with a custom table

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

custom tableを使用している場合に、whereメソッドがエラーを返してしまうバグがあったのを修正しています。


Fix HashWithIndifferentAccess#default when include?(nil)

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

HashWithIndifferentAccessのデフォルト値にブロックを与えている時に、HashWithIndifferentAccess#defaultメソッドを引数無しで呼び出した場合、Hash#defaultメソッド同様にnilを返すよう修正しています。


Merge pull request #25564 from brewski/serializable_hash_fix

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

ActiveRecord::Serialization#serializable_hashにfreezeした値を渡した際に正常に動作する事を確認するテストを追加しています。


Merge pull request #29799 from kamipo/remove_outdated_test_scoped_responds_to_delegated_methods

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

RelationArrayarel_tabledelegateする事を確認するテストを削除しています。

Arrayへのdelegateはもう行われていない、delegateを確認する為に使われているメソッド(insertupdate等)はRelationに定義されており、もう意味が無いため削除したとの事です。


Merge pull request #29801 from kamipo/extract_null_relation_test

activerecord/test/cases/relations_test.rbactiverecord/test/cases/null_relation_test.rbの修正です。

NullRelationに関するテストを別ファイルに切り出しています。


Rename helper to force_lazy_load_hooks.

railties/test/application/configuration_test.rbの修正です。

load hookを実行する為だけのメソッドの名前をlazy_loadからforce_lazy_load_hooksに修正しています。


support - as an argument to rails runner

railties/lib/rails/commands/runner/runner_command.rbの修正です。

rails runnerコマンドで-引数を指定出来るようにしています。-を指定した場合はstdinから値を読むこむようになります。

# bin/count_users.rb
puts User.count

上記のようなスクリプトがあった場合に、cat bin/count_users.rb | bin/rails runner - のような使い方が出来るようになっています。

docker使っている場合に、cat script.rb | docker exec -it <container_id> rails runner -みたいな使い方が出来るなら便利かもですねえ。


[ci skip] CodeTriage badge

README.mdの修正です。

READMEにCodeTriageのbadgeを追加しています。


Merge pull request #29828 from kamipo/fix_using_custom_table_with_joins

Active Recordの修正です。

custom tableを使用しているmodelにjoin処理を行った場合に、エラーになってしまうバグがあったのを修正しています。


Remove incorrect comment

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

ActiveRecord::AttributeSetattributesがprotectedになっている理由は、privateにしてしまうとRuby 2.2系でwarning(private attribute?)が出てしまう為とのコメントがあったのですが、ここではprotectedにしているのは左記とは別の理由のため、該当のコメントを削除しています。


Remove deprecated code concerning dirty methods in after callbacks

Active Recordの修正です。

deprecatedになっていたafter callbacksでdirty methodsを使用した場合の為の処理を削除しています。


Remove deprecated code concerning non-attributes and *_will_change!

activerecord/lib/active_record/attribute_methods/dirty.rbactiverecord/lib/active_record/attribute_mutation_tracker.rbの修正です。

deprecatedになっていたattribute_will_change!にvirtual attributesを指定した場合の処理を削除しています。