🦔

bundleコマンド実行時に任意の場所にあるGemfileを参照する

2024/03/15に公開

bundleコマンドを実行すると、通常はカレントディレクトリを起点に親ディレクトリへ遡ってGemfileが検索されるが、全く別のディレクトリにあるGemfileを参照したいことがある。

例えばthorコマンドを実行する際に、カレントディレクトリを基準にアレコレ処理をしたいが、コマンドを構成するコードや参照するgemの情報は別の場所で管理したいとする。

# do_somethingの実装はどこか別のディレクトリにある……
bundle exec thor do_something

こういう場合はgemfileパラメータを設定することで、任意の場所にあるGemfileを参照させることができる(相対パスも可能)。例えばこのようにbundle configを実行すると

bundle config set --local gemfile ../commands/Gemfile

カレントディレクトリに次のような.bundle/configファイルが作成され

---
BUNDLE_GEMFILE: "../commands/Gemfile"

以降、このディレクトリでbundleコマンド実行すると常に../commands/Gemfileが参照される。

参考: https://bundler.io/v2.5/man/bundle-config.1.html

Discussion