なるようになるブログ

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

rails commit log流し読み(2019/02/13)

2019/02/13分のコミットです。

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

actioncable/CHANGELOG.md


Merge pull request #35175 from drn/create-session

actionpack/lib/action_dispatch/testing/integration.rbの修正です。

ActionDispatch::Integrationでテスト用のセッションを作成する際に、applicationのrouteがActionDispatch::Routing::RouteSetインスタンスがどうかをチェックし、ActionDispatch::Routing::RouteSetインスタンスがの場合のみurl helper / mounted helperをロードするよう修正しています。

普通のRails application以外のapplication(PRでの例はGrape::API)でActionDispatch::Integrationを使用出来るようにする為。


Fix DatabaseSelector test that fails sometimes

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

DatabaseSelectorの後処理でconnection_handlersをデフォルトの値に戻すよう修正しています。


Merge pull request #35235 from rails/fxn/zeitwerk

activesupportrailtiesの修正です。

autoloaderにfxn/zeitwerkを使用する為の対応を行っています。

CRubyの場合、Rails 6ではデフォルトでautoloaderにzeitwerkが使用されるようになっており、もしzeitwerkではなく元々のautoloaderが使用したい場合は、config.autoloader:classicを指定すると従来のautoloaderが使用されるようになっています。また、zeitwerkが現状JRubyは未サポートらしく、JRubyの場合はデフォルトで従来のautoloaderが使用されるようになっています。

zeitwerk自体については、Zeitwerk: A new code loader for Rubyを参照。


Fix pluck and select with custom attributes

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

pluckselectにcustom attributesを指定した場合に、強制的にtable名で修飾されてしまい、結果不正なSQLが生成されてエラーになる、という問題があったのを修正しています。custom attributesについてはtableに同じ名前のカラムがある場合のみ修飾されるようになっています。


Should respect attribute_types over column_types

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

Querying#find_by_sqlメソッドでcolumn_typesattribute_typesに同じkeyがあった場合に、attribute_typesが使用されるよう修正しています。


Allow passing custom config to ActionCable::Server::Base

actioncable/lib/action_cable/server/base.rbの修正です。

ActionCable::Server::Baseに任意のconfigを指定出来るよう修正しています。

config = ActionCable::Server::Configuration.new
config.cable = { adapter: "redis", channel_prefix: "custom_" }
CUSTOM_CABLE = ActionCable::Server::Base.new(config: config)

異なる設定の複数のcable server(片方は認証ありで、もう片方は認証無し等)を使う時に使用する事を想定している、との事です。


Merge pull request #35034 from sponomarev/chore/ac-docs-worker-pool

rails guideのAction Cable OverviewConfiguring Rails Applicationsの修正です。

Action Cable Overviewにworker poolの設定について説明したWorker Pool Configurationの項を追加、及び、Configuring Rails ApplicationsAction Cable Overviewのconfigについて説明している箇所へのリンクの追加を行っています。


Support running AR isolated tests in parallel

activerecord/Rakefileの修正です。

Active Recordのisolated testsをparallelに実行するよう修正しています。


Revert "Merge pull request #35127 from bogdan/counter-cache-loading"

counter cacheの値が0の時の振る舞いを修正した、Bugfix association loading behavior when counter cache is zeroをRevertしています。

この対応では、実際のloadingを行わずにload済みとみなすという処理が含まれていました。で、それとは別に、counter cacheを使用している場合、子レコードを削除する際にcounter cacheの値に依存するようになっている、かつ、fixtureでデータをインポートした場合、counter cacheの値は更新されないようになっていました。

これらの複合で、fixtureでデータをインポートした場合(counter cacheの値が何らかの理由で更新されていない場合)に、子レコードが正しく削除出来ない、というバグが発生してしまったため、Revertされています。


Don’t log recipients when sending mail

actionmailer/lib/action_mailer/base.rbactionmailer/lib/action_mailer/log_subscriber.rbの修正です。

mail deliver時のlogに受信者のメールアドレスが出力されてしまっていたのを、出力しないよう修正しています。

電子メールアドレスは機密データ(GDPRだと個人情報)なので、ログに出すのは不適切だろう、という理由で修正されています。代わりにmessage idを出力するようにしています。