なるようになるブログ

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

rails commit log流し読み(2020/10/29)

2020/10/29分のコミットです。

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

activerecord/CHANGELOG.md


Dash comments should match read query regexp

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

double-dashコメント(e.g. -- some comment)をRead-Only Databaseで実行出来るよう修正しています。


Merge pull request #40426 from robin-drexler/fix-crossorigin-preload

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

crossorigin attributeが指定されていた場合に、resourcesに渡しているのと同じ値をpreload linkにも含むよう修正しています。

crossorigin attributeの指定がないとrequest credentials mode が一致せず、prelaodしたresourceが使われなくなってしまう為。


Revert "Remove unused internal methods in ActiveModel::Attributes"

ActiveModel::Attributes内の使用していないメソッドを削除した、Remove unused internal methods in ActiveModel::AttributesをRevertしています。

内部では使用していないが、public APIの一部な為。


Add test to make sure this method will not be removed again

activemodel/lib/active_model/attributes.rbactivemodel/test/cases/attributes_test.rbの修正です。

write_attributeread_attributeメソッドにdocを追加、及び、それらのメソッドを使用したテストを追加しています。


Merge pull request #40472 from btriller/ar-fix-broken-link

activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbactiverecord/lib/active_record/errors.rbのdocの修正です。

MySQL server errors reference pageへのリンクを修正しています。


Merge pull request #40042 from leequarella/or-unscope-inverse

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

unscopedorでinverse instanceに誤ったinstanceを設定しまうバグがあったのを修正しています。


Merge pull request #40469 from tmikoss/patch-1

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

exampleコードについて、DBへの処理でstring interpolationを使用しないよう修正、及び、delete_allに指定出来ないconditionを指定しているコードがあったのを修正しています。


Merge pull request #39497 from jhawthorn/render_with_invalid_options

Action Pack、Action Viewの修正です。

renderに不正なオプションを指定した場合にexception(ArgumentError)をraiseするよう修正しています。


Merge pull request #40370 from eileencodes/granular-role-and-shard-swapping

Active Recordの修正です。

connected_torole / shardを切り替える際に、クラス全体ではなく、abstract class毎にconnectionの切り替えが出来るよう修正しています。この機能はconfig.active_record.legacy_connection_handlingにfalseを指定した場合のみ有効化されるようになっています(デフォルトはtrue)。

例。

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

class AnimalsRecord < ActiveRecord::Base
  self.abstract_class = true
end

class Uer < ApplicationRecord
end

class Dog < AnimalsRecord
end

ActiveRecord::Base.connected_to(role: :reading) do
  User.first # default replicaからread
  Dog.first  # default replicaからread

  AnimalsRecord.connected_to(role: :writing, shard: :one) do
    User.first # default replicaからread
    Dog.first  # shard oneからread
  end

  User.first # default replicaからread
  Dog.first  # default replicaからread

  ApplicationRecord.connected_to(role: :writing, shard: :two) do
    User.first # shard twoからread
    Dog.first  # default replicaからread
  end
end