8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails開発環境でBootstrapが効かなくなってしまった時にしたこと

Last updated at Posted at 2022-07-06

Railsの開発環境でassets:precompileは通常不要だが、やってしまったときにBootstrapがブラウザに反映されなくなり、しばらくはまってしまったのでその時にやったことを備忘録で記載します。

環境

macOS Big Sur(11.6.6)
rails 6.1.6
Bootstrap 4.5.3

警告
Bootstrapの導入にはWebpackerで入れる場合とassetsに入れる場合とがありますが、前者でやっています。
https://qiita.com/kazutosato/items/d47b7705ee545de4cb1a

原因

開発環境でassets:precompileをしたことにより、public/assetsが生成されてしまい、そちらを見に行ってしまうようになり、以降のcssの変更なども反映されない。Bootstrapも読み込んでいない。

解決

assets:precompileによってできてしまったファイルを削除する。

念のため、
https://interfirm.hatenablog.com/entry/2014/10/24/131503
を参考に、以下(上から3つ)を実行してからファイル削除を行なった。

  • bundle exec rails assets:clean
  • tmp/cache/assets内のキャッシュを削除
  • development.rb内のconfig.assets.debug = falseに変更
  • public/assetsを削除
  • stylesheets内の.css, .css.mapを削除

順番に見ていきたいと思います。

bundle exec rails assets:clean

ターミナル
$ bundle exec rails assets:clean

Docker環境であれば、appなりwebのコンテナに入ってからbundle exec rails assets:clean実行します。

ターミナル
$ docker exec -it (appやwebの名前) bash

tmp/cache/assets内のキャッシュを削除

アプリ直下にtmpフォルダがありますが、そのフォルダ内のassetsごと削除します。

development.rb内を変更

config/environments/development.rb
config.assets.debug = true

となっていれば、falseに変更。
こちらはBootstrap読み込みが成功すれば元に戻して大丈夫です。

public/assetsを削除

assets:precompileで生成されてしまったファイルを削除します。

public内にassetsフォルダがあるとそのフォルダ内を自動的に読みにいってしまうのでassetsごと丸ごと削除します。

stylesheets内の.css, .css.mapを削除

また、app/assets/stylesheets内にもともとあった.scssファイルを元に.css、.css.mapが作成されていると思います(たとえば本番環境ではassets:precompileした後には作成されています)。

たとえば私のアプリ内は以下のようになっていました。

app/assets/stylesheets
application.css
evaluations.css
evaluations.css.map
evaluations.scss
home.css
home.css.map
home.scss
users.css
users.css.map
users.scss

assets:precompile前は以下でした。

app/assets/stylesheets
application.css
evaluations.scss
home.scss
users.scss

なので、余計なファイルを削除して、assets:precompile前の状態にします。

警告
application.cssは削除しないでください。

Dockerであればdocker-compose buildし、docker-compose upしてブラウザを確認し直してください。

これでもBootstrapが反映しない場合、キャッシュの可能性もあるので、ブラウザキャッシュをクリアしてためしてみてください。

※5つの手順を踏みましたが、最初の3つを実行しなくてもBootstrapが反映され、cssの変更がふたたび自動で反映される可能性もあると思います。

参考サイト

https://qiita.com/OHKN/items/c3efd4fb91c7bea85e01
https://interfirm.hatenablog.com/entry/2014/10/24/131503
https://qiita.com/gobtktk/items/be7d2e39a41e86545ecf

8
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?