Railsプロジェクトで使用するCICDツールとしてCircleCIを導入・ドキュメントを参考にして設定ファイルを書いていましたが、キャッシュが効いていない動きを見せていました。
▼キャッシュが効いておらず、毎回bundle install
をしているような動き
以下、CircleCIでbundle install
のキャッシュが効いていない時の対処方法についてです。
解消方法
-
bundle config set --local path
コマンドで、Gemインストール先指定 - 今までのキャッシュを使用しないよう設定ファイルを書き換え
下記をbundle install
の前に追記して、対応しました。
command: bundle config set --local path 'vendor/bundle'
Githubでも見れるようにしてあります。
- キャッシュの対象を
vender/bundle
に指定しているが、そこにGemが見つからず毎回インストールが走ってしまっている(キャッシュが効いていない) -
bundle install
コマンドはグローバルにGemをインストールする、プロジェクトローカルにGemたちをインストールしたいときは--path
指定を入れる
以上から、CircleCI上でキャッシュがあるかどうかを確認しに行く先であるvender/bundle
にGemたちがインストールされるようbundle config set --local path 'vendor/bundle'
を追記。
ここまでの対応でキャッシュは効くかなと思いましたが、効きませんでした。理由としては、CircleCIの方で「すでにキャッシュファイルあるので、キャッシュ保存スキップしますわ
」となってしまうから。
キャッシュ保存が実行されるよう、今までのキャッシュを使用しないように設定ファイルを書き換える対応をしました。
▼修正箇所
p
▶︎この時点のコミット
以上の対応を行った結果、キャッシュはちゃんと効くようになりました。
参考