ActiveRecord::AutoWritable

ActiveRecordで書き込み系のメソッドを呼んだときに自動的に書き込み用DBに接続する拡張をつくった。

ApplicationRecord.connected_to(role: :reading) do
  Post.create(attributes)
end

とかやると、普通は読み込み用DBに対してINSERTクエリを発行してしまう訳だが、この create 起因で呼び出されるメソッドに細工して、自動的に role: :writing で接続するという仕組み。create だけでなく、destroyupdate など、基本的なすべての書き込み系のメソッドに対してその細工を加えている(つもり)。

つくった背景は、switch_point gemの同様の機能から移行するため。