`ignore_columns` を指定してリリースし、その状態でカラム削除して、 ignore_columns を消して再度リリースする。
Rails では、特にプロダクションモードでは、 DB のスキーマ定義をアプリ起動時に読み取って、それをベースに ActiveRecord を初期化する。 なので、運用中にカラムが削除されると、あるはずのカラムがなくてエラーになる。 `ignore_columns` を使った上記のフローだと、これを回避できる。
Active Record Extended
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_tag
と form_for
の代替。
Pundit
View にて pundit の policy を利用する例: Helper にて Pundit を手動で呼び出している。
Rails API で session / cookie
Laravel とかだと、 api で session を扱うプラクティスが割とある(気がする)。 Rails も設定すれば、普通にできる(はず)。