はじめに
Bundler 2.1ではBundler 3で使えなくなる機能に対して警告が表示されるようになりました。
参考:【翻訳】Bundler 3アップグレードガイド - Qiita
この関係でBundler 2.1ではbundle install
に--path
オプションを付けると以下のような警告が発生します。
$ bundle install --path vendor/bundle
[DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag
この記事ではこの警告に対する対応手順を説明します。
なお、「今日初めてBundlerを使った」というRuby初心者さんは、必ずこの記事を最後まで読んでください!(大事な話が書いてあります)
対応手順
すでにbundle installを実行した場合
警告は出るものの、bundle install
実行後も--path vendor/bundle
のオプションは記憶されます。
ですので、それ以上の操作は必要ありません。
bundle installをまだ実行していない場合
bundle install
をまだ実行していない場合は、bundle install
を実行する前にbundle config
コマンドで明示的にpathを設定してください。
それから--path
オプションなしでbundle install
を実行すると警告は発生しません。
なお、pathの設定方法はglobalとlocalの2種類があります。
従来のbundle install --path vendor/bundle
と同じ動きになるのはlocalの方です。
# マシン全体でbundle install実行時のインストール先を
# vendor/bundleに設定する場合(global)
bundle config set path 'vendor/bundle'
# そのプロジェクト内でのみ、bundle install実行時の
# インストール先をvendor/bundleに設定する場合(local)
bundle config set --local path 'vendor/bundle'
# --pathオプションなしでインストールを実行する
bundle install
最後に:でもちょっと待って!!本当にpathの指定は必要?
もしあなたが今までBundlerを使ったことがなく、「ネットで見つけたBundlerの紹介記事を見ながらbundle install
をしようとしたら警告が出たので、警告メッセージでググってこのページにやってきた」という人であれば、きっと--path vendor/bundle
を付ける必要はありません。
--path vendor/bundle
のオプションを付けることを推奨している多くのWeb記事は、その必要性を十分に理解していないものが多いです。
pathオプションは特殊な条件下でしか必要になりません。
ですので、「今日初めてBundlerを使います」というような初心者さんは、 pathを指定せずにシンプルにbundle install
を実行してください。
(すでにbundle install --path vendor/bundle
を実行した人は、次回からpathオプションなしでbundle install
してください)
この件に関する詳しい話は以下の記事にまとめているので、こちらも読んでもらえると幸いです。
bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう - Qiita