2013-02-24 36 views

回答

1

据我所见,你不能指示捆绑器在更新时只保留最新版本。您可以删除所有宝石的所有旧版本一气呵成:

bundle exec gem cleanup 

(Reference)

+0

清理结束时出现以下错误。无法卸载bundler-1.2.3: \t Gem :: InstallError:未安装gem“bundler” 清理完成 – Sam 2013-02-24 13:23:32

+0

gem cleanup似乎删除旧版本,但如果我对远程机器执行“cap deploy” 。我如何以自动化的方式去除这个问题,捆绑器本身可以做到这一点 – Sam 2013-02-24 13:24:34

+0

正如我所说:我不这么认为。你不能编辑你的deploy.rb文件,以便它运行'gem cleanup'? – Mischa 2013-02-24 13:26:12

1

您可以通过将该版本放在gem文件中来指示捆绑器使用一个版本。有时候,我和rake有冲突,尽管我没有明确地在我的Gemfile中使用rake,所以我必须把rake版本放在我的Gemfile的顶部,这些版本可以被所有其他gem使用。

如果你的问题是你曾经使用独角兽4.5.0,现在它已经安装了独角兽4.6.1在你当地的宝石来源,你可以告诉宝石卸载你不再需要的版本。

gem uninstall unicorn --version 4.5.0 

如果你做了一个捆绑--deployment和填充供应商/ bundle目录,这是您要删除的宝石,然后我通常只是删除宝石目录,但是,我想你可以运行与路径捆绑,如下所示:

bundle --deployment --path vendor/bundle 
gem uninstall unicorn --version 4.5.0 

当您运行捆绑器时,它会记住设置。我痛苦地发现了这个 - 没有开关。 --path设置将告诉gem使用本地vendor/bundle目录作为你的本地gem源码。请记住通过再次运行包来重新设置路径。

+0

我不想指定版本,因为在接下来的升级,我想移动到更高版。我该如何实现自动化? – Sam 2013-02-24 13:20:54

+0

@Sam,你可以用'gem cleanup'删除所有宝石的所有旧版本。请参阅下面的答案。 – Mischa 2013-02-24 13:22:33

+0

您可以在Gemfile中将最小版本指定为4.6.1,使用> =。 – 2013-02-24 13:23:03