在Ruby脚本中运行bundle install?

时间:2014-06-17 18:05:20

标签: ruby git bundler

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

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

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

我尝试使用捆绑工具--path选项,但这也没有完成工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

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

来自Bundler的文档:

  

任何打开子shell的Ruby代码(如系统,反引号或%x {})都将自动使用当前的Bundler环境。如果你需要使用不属于当前bundle的Ruby命令,请使用带有块的with_clean_env方法。

因此,我会尝试这个:

Bundler.with_clean_env do
  `bundle install`
end

答案 1 :(得分:1)

正如VonC所说。我需要添加BUNDLE_PATH env var。