なるようになるブログ

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

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

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

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

actionview/CHANGELOG.md

activerecord/CHANGELOG.md


Merge pull request #29349 from robertomiranda/responsive-images

actionview/lib/action_view/helpers/asset_tag_helper.rbの修正です。

image_tagメソッドにsrcset属性を指定する為のsrcsetオプションを追加しています

image_tag("icon.png", srcset: { "icon_2x.png" => "2x", "icon_4x.png" => "4x" })
# => <img src="/assets/icon.png" srcset="/assets/icon_2x.png 2x, /assets/icon_4x.png 4x">

image_tag("pic.jpg", srcset: [["pic_1024.jpg", "1024w"], ["pic_1980.jpg", "1980w"]], sizes: "100vw")
# => <img src="/assets/pic.jpg" srcset="/assets/pic_1024.jpg 1024w, /assets/pic_1980.jpg 1980w" sizes="100vw">

参考:srcset属性について - Qiita


Merge pull request #29506 from pat/frozen-string-literals

Acitve Supportの修正です。

Frozen string literals指定してもエラーにならず動作するよう、Stringを変更する箇所でdupを呼び出すよう修正しています。


Merge pull request #29540 from kirs/rubocop-frozen-string

RubocopのStyle/FrozenStringLiteralCommentを有効にし、各ファイルの先頭にfrozen_string_literal: trueを追加しています。

が、テストが通らなくなってしまった為、revertされています。


Revert “Merge pull request #29540 from kirs/rubocop-frozen-string”

というわけで、直前のStyle/FrozenStringLiteralCommentの対応をrevertしています。


Avoid shadowed variable

actionview/lib/action_view/helpers/asset_tag_helper.rbの修正です。

ローカル変数と同名の変数を、ブロックパラメータで指定していた箇所があったので、別の変数名を使用するよう修正しています。


Deprecate and replace set_state method

ActiveRecord::ConnectionAdapters::TransactionState#set_stateメソッドがdeprecateになりました。

代わりに、明示的にstateを指定する為のrollback!commit!nullify!メソッドが追加されたので、stateを変更したい場合は左記メソッドを使う必要があります。

Transactionのstateを明示的に変更したいのって、どういう時なんだろう。


Apply record state based on parent transaction state

activerecord/lib/active_record/connection_adapters/abstract/transaction.rbactiverecord/lib/active_record/transactions.rbの修正です。

transactionをネストしている、かつ、親のtransactionでrollbackした際に、子のtransaction内のオブジェクトがpersistedされた状態とみなされていたのを、左記のような場合でもpersistedとみなされないよう修正しています。

Post.transaction do
  post_one.save # `post_one`の`persisted?`はfalseを返す

  Post.transaction(requires_new: true) do
    post_two.save # 元々は、`post_two`の`persisted?`がtrueを返してしまっていたのを、falseを返すよう修正
  end

  raise ActiveRecord::Rollback
end

Fix removed version 5.2 to 6.0 in the deprecation message

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

ActiveRecord::ConnectionAdapters::TransactionState#set_stateメソッドのdeprecate message内のメソッドを削除するRailsのバージョンが5.2になっていたのを6.0に修正しています。


Move test related to tmp:clear task to tmp_test.rb

railties/test/application/rake/tmp_test.rbrailties/test/application/rake_test.rbの修正です。

tmp:clear タスクに関するテストをtest/application/rake/tmp_test.rbに移動しています。


Merge pull request #29566 from eugeneius/wrap_parameters_query

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

既に同じkeyがparamsにある場合は、wrap処理を行わないよう修正しています。


:warning: “Use assert_nil if expecting nil. This will fail in Minitest 6.”

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

assert_equalメソッドのexpected引数にnilを指定していたテストを、assert_nilを使用するよう修正しています。

Minitest 5.10から上記使い方がdeprecateになり、nilを期待する場合はassert_nilが使用する必要がある為。


Expectation first

Action ViewとAcitve Supportのテストの修正です。

assert_equalの引数の順番がおかしかった(expectedとactualが逆だった)テストを修正しています。