1
0

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 3 years have passed since last update.

ローカル(MacOS)環境でproductionモードで実行するとBootStrapのcssが反映されなくなったときの解決法

Last updated at Posted at 2021-03-23

せっかくある程度のデザインができたのに、productionモードで動作確認するとCSSがバグって表示が崩れてしまいました。
BootStrapのCSSが反映されていませんでした。
解決するのにとても時間がかかったのでメモ。

TL;DR

  • Productionモードでデザインが崩れた原因はBootStrapのCSSのimportの書き方
  • DeveloperToolの確認は忘れずに(<- 当たり前だけどいつも忘れるw)
  • これがRailsの黒魔術(?)

動作環境

動作環境は下記になります。

version
MacOS Mojave
Ruby 2.7.2
Rails 6.0.3.5
MySQL 5.7
BootStrap 4.5.3

本題

原因の特定

今回productionモードで動作させるために

  1. アプリをコンパイルする(rake assets:compile)
  2. rails sでRailsを立ち上げる
  3. localhost:3000/(該当ページ)にアクセスする
  4. DeveloperToolを開く → Consoleタブをクリック(これに気づくのにめっちゃ時間がかかりました)

という手順を踏みました。
1~3は、末尾にRAILS_ENV=productionをつけて実行しています。
すると下記の内容が表示されていていました。
18_09_56.jpg
画像が見にくいのでエラー内容を文字起こしすると下記のようになってます。

Failed to load resource: the server sesponded with a status of 404(Not Found) bootstrap.css:1

CSSが見当たらないよというエラーが発生しています。

このエラーが発生している原因の検討をつけます。
自分のアプリの場合はBootStrapapp/assets/stylesheets/application.scssで読み込むように設定していました。
該当するファイルを開いてみると、下記の書き方をしていました。これが原因でした。

app/assets/stylesheets/application.scss
@import "bootstrap/dist/css/bootstrap.css";
@import "font-awesome-sprockets";

解決方法

これは書き方の問題ですが、単純に.cssという記述が必要ありません。
コードを下記のように修正します。

app/assets/stylesheets/application.scss
- @import "bootstrap/dist/css/bootstrap.css";
+ @import "bootstrap/dist/css/bootstrap";

修正した後下記手順を行い表示崩れが直っていればokです!!

  1. アプリを一度終了
  2. アプリをコンパイル(rake assets:precompile)
  3. rails sでRailsを立ち上げる
  4. 該当ページにアクセスする

なぜ上記のような記述になっていたのかは覚えがありませんが、書き方が.cssいるかいらないかわからないけど動いたから大丈夫でしょということだったと思います。

じゃあなぜ動いていたのか?

具体的にはわかりませんが、
developmentモードはこの微妙な間違いとかを解釈して動くようにしてくれるらしいです。
Rails恐るべし...
developmentモード恐るべし...

ちなみに

Railsのアップグレードを行ったのですが、Railsを5から6に上げたせいか全体的に動作がもっさりしてる…
どうにかならんかな...
知ってる人いたら教えてください!!

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?