[Rails] またまたCSSだけが本番環境に反映されない


はじめに

前にも同じようなことがあって、一応応急的な処置で対処したのですが、それすら通用しなくなって途方に暮れていました。
またまた、応急処置的な対処ですが、解決しましたので記事で残しておきます。

アプリの構造やインフラ周りも私の場合で書いてますので、コマンドやファイルの違いなどがあると思いますがご容赦いただけたらと思います。

前に書いた記事はこちら↓
https://qiita.com/minhee/items/fba5564cb8c17109a372

解決策

前に書いた記事とやっていることは同じですが、より手動にしたという感じです。

①まずDocker環境を置いているEC2インスタンスにターミナルからログイン

②下記コマンドでアプリを置いているコンテナのIDを確認し、コンテナ内に入る

# コンテナのIDを確認
docker ps

# コンテナの中に入る
docker exec -it 確認したコンテナid sh

③precompileされたCSSファイルを消しに行く

# precompileされているファイルが置いているディレクトリへ移動
cd public/assets

# lsコマンドで拡張子がcssのファイルを確認して削除
ls

rm 拡張子がcssのファイル

# 元のディレクトリに戻る
cd ../..

④元のディレクトリでassets:precompileをする

bundle exec rails assets:precompile RAILS_ENV=production

⑤コンテナを立ち上げ直す

コンテナから出てnginxを立ち上げ直さないと読み込まないと思いますので、コンテナを立ち上げなおします。

# コンテナから出る
exit

# 一度コンテナを落とす(私の場合オプションをつけないとうまく落とせないのでつけてます)
docker-compose down --remove-orphans

# 立ち上げる
docker-compose -f docker-compose.yml -f docker-compose.production.yml up 

これでCSSの反映が無事できました。

最後に

本当は試したいことがたくさんあるのですが
とりあえず数日後に大事な面接でアプリをお見せしないといけないので、これ以上この周辺はとりあえず触らないようにしています。
当日反映されていない!ってなるのが怖すぎます。

手動でrmコマンドでファイルを消していましたが、コンテナ内で
bundle exec rails assets:clobber RAILS_ENV=productionを使ってprecompileされているものを消して、bundle exec rails assets:precompile RAILS_ENV=productionで再作成すればいいのではないかとも思いますが、置いときます。