GithubActions でビルド回してたんだけど、 PR 積んだブランチをビルドしたら遭遇した。
結論から書くと、 RAILS_SERVE_STATIC_FILES=true
を precompile 時に追加すれば回避できる。
RackBasicAuth の追加
リリース直前になって「フライング利用するユーザを抑制したい」と言われてしまい。
BFF 設計なので「雑にバックエンドに Basic 認証入れるか〜」という回避方法を採用し、用意されていた RackBasicAuth に production を有効にする設定を入れた。
ところ、 GithubActions でのビルドが assets:precompile
落ちるようになった。
ActionDispatch::Static
落ちた時のコマンドはこうだった (Rails 6.1 環境です)。
RUN RAILS_ENV=production DATABASE_ADAPTER=nulldb SECRET_KEY_BASE=dummy bundle exec rails assets:precompile
で、なんでか考えてたんだけど、 RackBasicAuth (/config/initializers/basic_auth.rb
) にこういうヤツが書かれている。
Rails.application.configure do config.middleware.insert_before ActionDispatch::Static, RackBasicAuth end
こいつじゃねえか? ということでググってみる。
おーっ、そのものズバリじゃん、という事で assets*precompile
を以下のように変更。
RUN RAILS_SERVE_STATIC_FILES=true RAILS_ENV=production DATABASE_ADAPTER=nulldb SECRET_KEY_BASE=dummy bundle exec rails assets:precompile
これで無事ビルドも通るようになった、めでたしめでたし。
自分の責務に関わるトコしか Rails のコアになるトコの実装読んだこと無いので、頑張って一通り読んだほうがよさそうだなあ、と今やられている案件に関わってから思っている。
責務の範囲外でも、ある時突然「案件内でけっこう技術が出来る人」になってしまうリスクがあるのだなあ、という学びがあった。 日々学べ……!