lazy_high_chartsを1.6.1にアップデートしたらCIが落ちるようになった


Railsでlazy high chartsを使っていて、最近アップデートしようとしたら、エラーが出るようになって更新できなかったので、そのときに調べたことをまとめています。

気の早いお方へ

7/29以前からlazy_high_chartsを使っていて、アップデートしたら couldn't find file 'highcharts/highcharts' ...というエラーが出てあれー?ってなっている方はrake highcharts:updateをしてみてください。vendor/assets/javascripts/highcharts以下に最新のhighchartsがダウンロードされて使えるようになります。

詳細

CIでエラー

dependabotが更新のプルリクを作ってくれていたんですが、CIでエラーが出ていました。
couldn't find file 'highcharts/highcharts'と、highcharts

Failure/Error: //= require highcharts/highcharts

ActionView::Template::Error:
  couldn't find file 'highcharts/highcharts' with type 'application/javascript'
  Checked in these paths: 
    /home/circleci/repo/app/assets/config
    /home/circleci/repo/app/assets/images
    /home/circleci/repo/app/assets/javascripts
    /home/circleci/repo/app/assets/stylesheets
      :
      :

調査

地道に前回インストールしたバージョンのコミットからの差分を見ました。
大変そうですが、実は5個しかみてません。
普段から最新のgemを使うようにしていて、ホントよかったです!

それで見つけたのがこのコミットです。

内容は「gemにjsのソースをバンドルすると、本家がアップデートするたびにgemのバージョンもあげなきゃいけなくて大変だと思うので、別途利用者が個別にインストールする形をとったらどうでしょう?」というもので、最新のhighchartsを取得するrakeタスクの追加と、gem内部のjsの削除がされていました。

その後、よくよく見るとREADME.mdのインストール手順にrakeタスクの実行が追加されていました。

highchartsのインストールで解決

追加されたインストール手順のrake highcharts:updateを実行すると、無事にhighchartsをインストールできました。場所はvendor/assets/javascripts/highchartsです。

利用しているページでグラフが表示されていることを確認して、問題ないことがわかりました。

リポジトリに登録して、解決しました。

懸念事項

今までlazy_high_chartsのアップデートでhighchartsの更新が行われていたわけですが…これが自分たちでやらなくてはならなくなってしまいました…。

どうやって忘れないようにしよう…。

おわりに

sprocketsからwebpackerに移行したいです…!
そしたらアップデート作業をdependabotに頼めるので。

あとは…README.mdのblame見ればよかった。
ちゃんとREADME.mdも更新されていたので、コミットログでなくて、こちらを見たらもっと楽だったと思いました…。