"bundle update"和"gem update"有什么区别?

7

我有一个基于Ruby on Rails的应用程序,使用Ruby Version Manager。我可以使用bundle updategem update更新gems吗?它们做的事情一样吗?


同时提问和回答的目的是什么? - zeantsoi
2
请阅读以下链接,了解为何在这里提出问题并自己回答问题不仅是可以接受的,而且明确被鼓励:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/。尽管如此,您会注意到我还没有接受答案,因为我正在向社区提交问题,以检查它是否完整和正确。 - Claudio Floreani
这个问题与https://dev59.com/vG445IYBdhLWcg3w_O8m有点相关,但实际上并不符合本问题的目的。 - Claudio Floreani
1个回答

15
主要区别在于,Rubygems(通过命令gem调用)管理单台计算机上的所有 gem(如果使用 RVM 则为 gemset),而 Bundlerbundle)管理单个应用程序的 gem set(旨在部署到多台计算机)。 Ruby Version Manager (rvm) 只是简化了在同一台计算机上管理不同 gem 版本的任务,但它与应用程序无关,除非您想为特定应用程序命名 gemset(请参见named gemsets)。
两者都将忽略先前安装的任何 gem,并根据源中提供的所有 gem 的最新版本再次解析所有依赖项。但是,BundlerRubygems 不同,它只会更新应用程序的 Gemfile 中指定的 gem 和依赖项,遵守其限制(版本号和条件)。
也就是说,您应该使用 bundle install 而不是 bundle update,以确保在计算机之间安装完全相同的 gem 和版本。

1
你应该在Gemfile中使用版本号(或者叫做“精子”)来避免这个问题。 - Dave Newton
命令名称为Rubygems。执行该命令的命令是 gem。您可能希望修复它,同时花些时间格式化文本,使其更易读。 - the Tin Man
谢谢您指出这一点。我已经编辑了答案。 - Claudio Floreani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接