在Ruby脚本中运行bundle install?

use*_*663 3 ruby git bundler

我正在构建一个Ruby脚本来循环遍历多个目录,并bundle install在所有目录上运行git命令:

dirs = ['~/code1, ~/code2, ~/code3]
dirs.each do |dir|
  Dir.chdir(dir) do
      `git checkout develop`
      `git pull`
      `bundle install`
  end
end
Run Code Online (Sandbox Code Playgroud)

当我这样做时,git在正确的目录中运行,但bundler在与脚本相同的目录中运行。

我尝试使用捆绑程序的--path选项,但是那也没有完成任务。

有任何想法吗?

Mat*_*son 5

您的bundle install子进程可能继承了现有的Bundler环境,这将导致意外行为。

从Bundler的文档中:

任何打开子外壳的Ruby代码(例如系统,反引号或%x {})都将自动使用当前的Bundler环境。如果您需要使用不属于当前捆绑软件的Ruby命令,请使用with_clean_env方法和一个块。

因此,我会尝试这样做:

Bundler.with_clean_env do
  `bundle install`
end
Run Code Online (Sandbox Code Playgroud)


use*_*663 1

正如VonC所说。我需要添加 BUNDLE_PATH 环境变量。