我构建一个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
选项,但这也没有完成工作。
有什么想法吗?
答案 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。