Rails 7 の ActionView::Template::Error (アセット “application.css” がアセット パイプラインに存在しません。)
概要
Rails 7 で webpacker から importmaps に移行した後、解決するために何をしてもこのエラーが発生し続けます。以下はエラーの出力です。
I, [2022-12-02T11:33:16.828698 #2401] INFO -- : [ca024b47-6054-444f-ab01-7f92d98e099f] Started GET "/" for 127.0.0.1 at 2022-12-02 11:33:16 +0500
I, [2022-12-02T11:33:16.858168 #2401] INFO -- : [ca024b47-6054-444f-ab01-7f92d98e099f] Processing by Devise::SessionsController#new as HTML
I, [2022-12-02T11:33:17.079797 #2401] INFO -- : [ca024b47-6054-444f-ab01-7f92d98e099f] Rendered /Users/hamzaaamir/.rvm/gems/ruby-3.1.0/gems/devise-4.8.1/app/views/devise/sessions/new.html.erb within layouts/application (Duration: 10.1ms | Allocations: 3457)
I, [2022-12-02T11:33:17.080678 #2401] INFO -- : [ca024b47-6054-444f-ab01-7f92d98e099f] Rendered layout layouts/application.html.erb (Duration: 11.0ms | Allocations: 4035)
I, [2022-12-02T11:33:17.080831 #2401] INFO -- : [ca024b47-6054-444f-ab01-7f92d98e099f] Completed 500 Internal Server Error in 223ms (ActiveRecord: 74.8ms | Allocations: 17972)
F, [2022-12-02T11:33:17.081562 #2401] FATAL -- : [ca024b47-6054-444f-ab01-7f92d98e099f]
[ca024b47-6054-444f-ab01-7f92d98e099f] ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.
):
[ca024b47-6054-444f-ab01-7f92d98e099f] 6: <%= csrf_meta_tags %>
[ca024b47-6054-444f-ab01-7f92d98e099f] 7: <%= csp_meta_tag %>
[ca024b47-6054-444f-ab01-7f92d98e099f] 8:
[ca024b47-6054-444f-ab01-7f92d98e099f] 9: <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
[ca024b47-6054-444f-ab01-7f92d98e099f] 10: <%= javascript_importmap_tags %>
[ca024b47-6054-444f-ab01-7f92d98e099f] 11: </head>
[ca024b47-6054-444f-ab01-7f92d98e099f] 12:
[ca024b47-6054-444f-ab01-7f92d98e099f]
[ca024b47-6054-444f-ab01-7f92d98e099f] app/views/layouts/application.html.erb:9
importmaps rake タスクを実行し、CSS ファイルをコンパイルするために sassc-rails を追加しました。開発環境では正常に動作しますが、運用環境ではエラーが発生します。また、Rails Assets:precompile も実行しました。
assets/config/manifest.jsの私のコード
//= link_tree ../images
//= link_directory ../stylesheets .css
//= link_tree ../../javascript .js
//= link_tree ../../../vendor/javascript .js
assets/stylesheets/application.scss にある私のコード
@import "bootstrap";
@import "./dashboard.scss";
@import "./sidebar.scss";
解決策
Rails 7の場合は次のコマンドを実行します
rails assets:precompile
これにより、パブリック フォルダーにアセット フォルダーが作成されます。次に、サーバーを再起動します。