MastodonとかのRailsでSAFETY_ASSURED=1つけないとdb:migrateできないのは、まぁそのコミット書いた人のミスでバグみたいなもんなんですが、ヤバイのは、じゃぁいつもつけとけばいいんだねってことで.env.productionに書いたり、投稿やブログで「これをつけます」とか書いて、それをみんなが真似することであります。
これ、Strong Migrationsっていうgemによるもので、安全でないデータベースへの変更を開発段階でキャッチして、より安全な方法で書こうねって奴で、配布前に潰しておくものなので、配布後にひっかかっちゃダメなワケです。
で、SAFETY_ASSUREDという環境変数はこれを回避するもの。なので、常時つけといたら安全装置の意味がないのです。まぁ、デプロイに失敗しなくなるのでありがたいっちゃありがたいんですが、たとえばデータベースを長時間ロックする奴とか、うっかり実行してしまう。
今回のbackupsテーブルは、そもそもメッチャ小さいので、型を変更しても瞬時に終わります。
statusesでやったらDBロックされて固まります……。