Rails でカラム削除

`ignore_columns` を指定してリリースし、その状態でカラム削除して、 ignore_columns を消して再度リリースする。

Rails では、特にプロダクションモードでは、 DB のスキーマ定義をアプリ起動時に読み取って、それをベースに ActiveRecord を初期化する。 なので、運用中にカラムが削除されると、あるはずのカラムがなくてエラーになる。 `ignore_columns` を使った上記のフローだと、これを回避できる。

https://zenn.dev/yosipy/articles/3074a255be2c5e

Related Scraps:

Active Record Extended

Rails で DB に PostgreSQL を使う場合に、導入しておきたい ActiveRecord の拡張ライブラリ。

ActiveRecord の autosave

ActiveRecord の relation 定義には、 autosave を指定できるが、その挙動のまとめ。

load_async

.load_async で起動。 グローバルなスレッドプールのコネクションを利用して、別途で ActiveRecord をロードする仕組み。

ActiveRecord で MySQL の共有レコードロックを取得する

relation.lock('LOCK IN SHARE MODE')

ActiveRecord のデフォルト値

ActiveRecord は、 DB のデフォルトを読み込んで、それをモデルのデフォルト値として採用する。

aws-record

AWS が提供する ruby 系の gem で、DynamoDBをバックエンドとする ORM を提供する。 DynamoDB は RDB ではないので、ActiveRecord としては提供されず、独自 ORM という形式が取られている。

Devise の User モデルの分割

Perfect Rails の著者が、 Devise の User モデルを分解して、モダンな感じで利用する方法を示す記事。

aws-sdk-rails

Rails を aws 上で動かす際に欲しくなる機能もろもろを提供うる AWS のオフィシャル gem。

Devise

わかりやすくまとめた記事:

form_with

Rails v5.1 以上では、 form 系はこれを使え、という方針。 form_tagform_for の代替。

Pundit

View にて pundit の policy を利用する例: Helper にて Pundit を手動で呼び出している。

Rails API で session / cookie

Laravel とかだと、 api で session を扱うプラクティスが割とある(気がする)。 Rails も設定すれば、普通にできる(はず)。