Sprockets を Propshaft に置き換える
Rails 7 で rails new 作成したアプリケーションは Sprockets がデフォルト。このたび Rails 8.0.0 へアップグレードしたので、 Sprockets のままでもいいけれど、 Sprockets に関して特別なことをしていないため、今後のためにもあらたなデフォルトとなった Propshaft にしたい。
Propshaft のほうにアップグレードガイドがあり。ただしこれは webpacker 環境からの移行をガイドしている。
Upgrading from Sprockets to Propshaft
https://github.com/rails/propshaft/blob/v1.1.0/UPGRADING.md
日本語に訳されたものもあり
https://techracho.bpsinc.jp/hachi8833/2024_02_18/119856
引用「本ガイドでは、プロジェクトがRails 6.1以後の以下の規約に沿っていることを前提としています。」とのことで、じぶんの求めるところ(= Rails 7 からのアップグレード)ではない。
(1) Gemfile
-# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
-gem "sprockets-rails"
+# The modern asset pipeline for Rails [https://github.com/rails/propshaft]
+gem "propshaft"
(2) app/views/layouts/application.html.erb
- <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
+ <%= stylesheet_link_tag :all, "data-turbo-track": "reload" %>
(3) 外部から取り込んだ JavaScript ファイルがある場合(の一例)
(3a) config/importmap.rb
追加で投入していた JavaScript ファイルが app/javascript/lib の下に置いてあるので、これを読み込むようにする
+pin_all_from "app/javascript/lib", under: "lib"
(3b) app/javascript/application.js
-import "./lib/lazysizes.min"
+import "lib/lazysizes.min"
(4) app/assets/stylesheets/application.css
不要になったので削除