2019年10月10日木曜日

Sprockets v4.0.0がリリースされたので早速上げてみたら動かなかった話

僕たちのチームでは毎朝担当者を抽選してGemのアップデートを行っています。

抽選にあたった人は、「bundle updateしたコミット作成してbundle diffの結果を載せたMergeRequestをGitLabに作成」みたいなことを必要なサブシステム分実行してくれる秘伝のコマンドを実行します。

その後、CIの結果やらCHANGELOGやらGitHubの比較リンクやらを眺めて取り込んでも問題ないかの見解をコメントします。

すべてのチェックが終わったらレビューを通してマージする流れになります。




そんなわけで今日のアップデート担当になったわけですが、sprocketsがv4.0.0になった影響でCIが落ちてました。

app/assets/config/manifest.jsがない的なエラーです。

アッブグレードガイドを眺めてmanifest.jsの作成が必要になったことを理解したので作成開始。
sprockets/UPGRADING.md at v4.0.0 · rails/sprockets

言われたとおりに↓みたいなのを作ってみたけどプリコンパイルが通らない。
//= link application.css
//= link application.js

目を凝らしてエラーを見てみるとどうやらapplication.sccsに書いているrequire hoge.fugaのようなファイル名にドットを含んだscssをrequireしているところで、Sprockets::FileNotFound的なファイルが見つからないエラーが起きている模様。

拡張子を誤判定しているのかなと思い拡張子を補完してみてもダメ。
ファイル名のドットをハイフンに変えてみたら動きました。

めでたしめでたし。

と思いきや、vendor/assetsのファイルなのでファイル名変えるのもどうしたもんかなと悩み中。

この挙動は意図したものだったのだろうか。
時間切れで調べきれなかった。
うーむ。

0 件のコメント:

コメントを投稿