本番環境を整えた後のアセットプリコンパイルの設定について。
環境
ruby 2.6.4
Rails 5.2.4.1
puma 3.12.4
nginx 1.12.2
エラーログ
本番環境でルートにアクセスしたらエラーが表示される。
エラーログはこんな感じです。(読みやすいように整形済)
INFO -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] Started GET "/" for 119.245.128.225 at 2020-03-09 02:40:39 +0000
INFO -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] Processing by PostsController#index as HTML
INFO -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] Rendering posts/index.html.erb within layouts/application
DEBUG -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] ^[[1m^[[35m (0.5ms)^[[0m ^[[1m^[[35mSET NAMES utf8mb4 COLLATE utf8mb4_general_ci, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483^[[0m
DEBUG -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] ^[[1m^[[36mPost Load (0.6ms)^[[0m ^[[1m^[[34mSELECT `posts`.* FROM `posts`^[[0m
INFO -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] Rendered posts/index.html.erb within layouts/application (39.9ms)
INFO -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] Completed 500 Internal Server Error in 41ms (ActiveRecord: 1.1ms)
FATAL -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd]
FATAL -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.):
FATAL -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] 5: <%= csrf_meta_tags %>
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 6: <%= csp_meta_tag %>
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 7:
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 8: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 9: <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 10: </head>
[e53342b0-17fc-4146-a4d1-6d64dc3007cd] 11:
FATAL -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd]
FATAL -- : [e53342b0-17fc-4146-a4d1-6d64dc3007cd] app/views/layouts/application.html.erb:8:in `_app_views_layouts_application_html_erb___3755432300733913925_37575720'
INFO -- : [8619eccb-3edb-4fa4-9a1b-70d8b0a37c37] Started GET "/" for 119.245.128.225 at 2020-03-09 02:40:45 +0000
INFO -- : [8619eccb-3edb-4fa4-9a1b-70d8b0a37c37] Processing by PostsController#index as HTML
ActionView::Template::Error (The asset “application.css” is not present in the asset pipeline.):
要するに、アセットされた"application.css"がないということらしい。
手順
1. 手動でプリコンパイルする
自動でプリコンパイルされないので、手動でプリコンパイルしてあげる。
|
|
public/assets/配下にプリコンパイルされたアセットが存在することを確認。
|
|
http://18.179.8.134/assets/application-111ac35321e379f53529ace176fe931c952be73f7ffd688b815ec21878126685.js
確認したアドレスに直アクセスしてみると、ちゃんと表示される(下記画像)。
2. public 配下のファイルを公開する
|
|
の値がfalseの場合、public配下のファイルが公開されないので、true
にするとうまく行きます。
が、直接true
にするのはよくないということだったので、上の変更はやめました。
エラーが出るのはENV['RAILS_SERVE_STATIC_FILES']
に値が入っていないのが原因なので、ターミナルから変数を渡すことにします。
|
|
3. サーバーを再起動する
コードの変更などを行った後、nginxの再起動だけでは反映されないので、pumaも再起動する必要があります。
|
|
親玉のpumaだけkill
すれば、cluster workerは消えてくれます。不安な場合は、再度$ ps ax | grep puma
コマンドで確認するといいです。