なるようになるブログ

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

rails commit log流し読み(2019/01/04)

2019/01/04分のコミットです。

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

actionview/CHANGELOG.md


Merge pull request #34706 from ChrisBr/instrumentation-guide

rails guideのActive Support Instrumentationの修正です。

sql.active_record hookに含まれているデータの一覧にconnectiontype_casted_bindsstatement_nameが不足していたのを追加しています。


Merge pull request #34816 from bogdanvlviv/add-skip-action-mailbox-option-to-rails-new-cmd

railties/lib/rails/generators/app_base.rbの修正です。

rails newにAction Mailboxのrequireをskipする為の--skip-action-mailboxオプションを追加しています。


2x faster connection.type_cast

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

type castが不要なtypeの一覧をメソッド(types_which_need_no_typecasting)で管理していたのを、メソッドで管理せず直接分岐にtypeを指定するよう修正しています。

元々は各adapterで定義を変えれるようにするためにメソッドにしていたのですが、3rd partyを含む全てのadapterで同じtypeを使用している(メソッドを再定義していない)、かつ、メソッドにする事で不要なobjectの生成が必要になってしまっている、という理由により修正されています。


Merge the redundant when Symbol case to the when String, ...

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

Quoting#_quoteの分岐処理で、Symbolの場合の処理をStringActiveSupport::Multibyte::Charsの分岐にマージしています。行っている処理が同じ為。


Update the "Configuring Rails Applications" guide [ci skip]

rails guideのConfiguring Rails Applicationsの修正です。

"Results of load_defaults"の項を追加し、各Railsバージョンでload_defaultsにより設定されるconfigの値について記載するよう修正しています。


Merge pull request #34858 from albertoalmagro/make-rails-compatible-accross-ruby-versions

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

Ruby 2.6でaverageメソッドに存在しないカラムを指定した場合の戻り値が0.0になっていたのを、Ruby 2.5まで同様にnilになるよう修正しています。

BigDecimalが1.4からNilClassにto_dメソッドを追加するようになり、その影響で結果が変わるようになっていました。色々議論はあったのですが、存在しないカラムが指定された場合についてはnil`になるのが望ましいだろう、という結論になり、元の挙動が維持されるようになっています。


Merge pull request #34773 from eileencodes/share-fixture-connections-with-multiple-handlers

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

複数のハンドラがある場合に、fixtureで使用したconnection poolを他のハンドラに共有するよう修正しています。

複数DBを使用している場合に、primary DBで作成したfixtureをreplica DBで参照できようにする為。


Fix example of I18n setting in the guide [ci skip]

rails guideのRails Internationalization (I18n) APIの修正です。

Inferring Locale from the Language Headerの項にあるexampleコードで、debug用のログで使用する値に誤りがあったのを修正しています。


Merge pull request #34797 from gsamokovarov/views-without-defined-protect-against-forgery

actionview/lib/action_view/helpers/csrf_helper.rbactionview/lib/action_view/helpers/url_helper.rbの修正です。

csrf_meta_tagsメソッド及びtoken_tagメソッドで、protect_against_forgery?メソッドを使用する前に、メソッドが定義されているかチェックするよう修正しています。

Railsアプリケーションで上記メソッドを使用する場合、protect_against_forgery?は必ず定義されているのですが、Railsアプリケーション外で上記メソッドを使用したい場合にprotect_against_forgery?は定義されていないケースはある為、NoMethodErrorになるのを防ぐためにメソッドの定義チェックを行うようにしています。