なるようになるブログ

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

rails commit log流し読み(2018/10/21)

2018/10/21分のコミットです。

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


Merge pull request #34265 from olivierlacan/flexbox-guides-index https://github.com/rails/rails/commit/5943a5562eeea16afc5b809a1fcdd497ccec9465

Rails Guideの修正です。

インデックスの表示flexbowを使用するよう修正、リリース日の表示がYYYY-MM-DDフォーマットだったのをMonth Yearフォーマットに修正、等を行っています。

before

47247826-ecd8ee00-d3d3-11e8-98d2-ee453e57b2c5.png (3840×2246)

after

47247846-109c3400-d3d4-11e8-8926-90583932cf47.png (3840×1620)


Use String#truncate_bytes inside Multibyte::Chars#limit

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

Multibyte::Chars#limitメソッドで文字をスライスするのに独自のロジックで行っていたのを、String#truncate_bytesを使用するよう修正しています。


Add new exception message to datetime from hash cast

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

Type::DateTime classのcast処理で、castする値がHashだった場合、かつ、必須のkeyが無い場合に表示するエラーメッセージに、エラーの内容の詳細を含むよう修正しています。

# before
ActiveModel::Type::DateTime.new.cast(a: 1)
# => ArgumentError (1)

# after
ActiveModel::Type::DateTime.new.cast(a: 1)
# => ArgumentError (Provided hash {:a=>1} doesn't contain necessary keys: [1, 2, 3])

Reduce string allocations in read/write_attribute

activerecord/lib/active_record/attribute_methods/read.rbactiverecord/lib/active_record/attribute_methods/write.rbの修正です。

read_attributewrite_attributeメソッドで、メソッドの最初で引数のattr_nameをStringに変換するよう修正しています。

元々は最初にattribute_alias?メソッドでチェック及びattribute_aliasでaliasを取得してからStringに変換を行っていたのですが、attr_nameがSymbolの場合左記のメソッドそれぞれでStringへの変換処理を発生してしまう為、不要なStringへの変換処理を減らすようにする為に呼び出し元で先に変換するようにしています。