Ruby 更新Gemfile.lock而不安装gems

Ruby 更新Gemfile.lock而不安装gems,ruby,bundler,gemfile.lock,Ruby,Bundler,Gemfile.lock,有没有办法在不安装已更改的gems的情况下强制更新Gemfile.lock bundle inject rmagick "=1.7.1" 运行捆绑锁--更新 我在Chris Blunt的博客中找到了答案: 今天,我发现了一种节省下载gems所浪费时间的方法:bundler的lock命令 此gem命令可解析应用程序的依赖项,并写出相应的Gemfile.lock——而无需安装任何gem本身 根据changelog,这个命令被添加进来,在提出这个问题八个月后发布。而不是 bundle instal

有没有办法在不安装已更改的gems的情况下强制更新
Gemfile.lock

bundle inject rmagick "=1.7.1"

运行
捆绑锁--更新

我在Chris Blunt的博客中找到了答案:

今天,我发现了一种节省下载gems所浪费时间的方法:bundler的lock命令

此gem命令可解析应用程序的依赖项,并写出相应的
Gemfile.lock
——而无需安装任何gem本身

根据changelog,这个命令被添加进来,在提出这个问题八个月后发布。

而不是

bundle install
请执行以下操作:

bundle lock
这将只更新
Gemfile.lock
,而不尝试在本地安装文件。如果要为远程或部署平台准备
Gemfile.lock
,则必须使用

bundle lock --add-platform ...

位于

的最新文档为什么要/必须这样做?也许有更好的方法,你到底想做什么?我正在部署到一个外部服务,它需要一些特定版本的gems,而这些gems不会安装在我的系统上。使服务工作的唯一方法是使用所需版本的有效Gemfile.lock。我可以在Gemfile.lock中手动执行,但我更希望能够使用bundler“正确”地更新它。如果我没有弄错的话,bundler会通过安装gems来更新gems。您可以登录到外部服务并在那里运行
bundle update
,也可以在本地设置一个与您的外部服务匹配的虚拟机。@Stefan恐怕这是不可能的。Heroku服务不容易虚拟化。它的工作原理是看一个你推送到服务的git回购协议,然后从那里开始引导。我似乎无法让它工作。我在Gemfile中不断得到“您指定的rmagick(_some_version)和rmagick(injected_version)”,将您的(dev)版本移动到开发组,并将Heroku的版本保留在主要部分(确保您部署到Heroku——无需开发),我必须运行
bundle lock--update
bundle lock
而不运行
--update
将向
Gemfile.lock添加缺少的gem,而不进行可能有害的更新。