4
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 s -e productionでBootstrapが適用されない

Posted at

#環境
macOS Big Sur(11.6)
rails 6.1.4
bootstrap5

#崩れるbootstrap
普段はrails sでdevelopment環境で確認しているけど、rails s -e productionで本番環境の挙動を確かめたい。
しかし、開発環境ではBootstrap5がちゃんと表示されていたのに、production環境では体裁が崩れる。

#一応事前にはこちらは済んでます。

$ rails asset:precompile

#なんで?
production.logを見てみると

production.log
ActionController::RoutingError (No route matches [GET] "/packs/js/application-81c24075e6920f66b791.js")

とかいうのが延々と出ている。
webpackerのコンパイルがうまくいっていないのか?と思い、以下を実行してもNG。
(実際はrails asset:precompile時点でwebpacker:compileも走る)

$ rails webpacker:compile

#結論
ここ↓の回答にありました。
[RAILS 6 + Webpacker -- route error for packs/css|js/application-* in production environment]
(https://stackoverflow.com/questions/67863081/rails-6-webpacker-route-error-for-packs-cssjs-application-in-production)

"did you set config.public_file_server.enabled to true in production.rb ?"

つまり
config/environments/production.rb の
config.public_file_server.enabled = true にすれば良い。
これによって本来コンパイルされたpublic配下にアクセスできるようになる。

config/environments/production.rb
  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  #config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.public_file_server.enabled = true

developmentだとrails sの際に勝手にcompileが走るし、apacheやnginxのwebサーバ環境だとすでに値が設定されている。pumaのproduction環境だけでbootstrapが適用されないのはこれが原因でした。めでたし。

4
4
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
4
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?