【问题标题】:Run bundle install inside a Ruby script?在 Ruby 脚本中运行 bundle install ?
【发布时间】:2014-08-07 20:41:15
【问题描述】:

我正在构建一个 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 选项,但这也没有完成工作。

有什么想法吗?

【问题讨论】:

标签: ruby git bundler


【解决方案1】:

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

来自 Bundler 的文档:

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

因此,我会试试这个:

Bundler.with_clean_env do
  `bundle install`
end

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2012-04-24
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2013-01-05
      相关资源
      最近更新 更多