更新 Ruby gems 的多种方式

Sun*_*day 7 ruby rubygems

我想了解以下 Ruby/Bundler/RubyGems 命令之间的差异:

  1. bundle install
  2. bundle update
  3. gem install my_gem.gem
  4. gem update my_gem.gem

假设 my_gem 托管在ruby​​gems.org上。我正在运行 Ruby 1.8.7、RubyGems 1.8.10 和 Bundler 1.0.21。我也有rvm 1.8.6可用的(但我不确定 rvm 在更新 gems 时是否相关)。

我也用于git版本控制。我手动更新是否有意义Gemfile?或者当运行上述命令之一时会自动发生这种情况吗?

jef*_*unt 7

您可以通过更改Gemfile来添加/删除/更新应用程序中运行的 gem(或只是 gem 的版本)。Gemfile.lock是由捆绑程序自动更新的文件。事实上,您不应该尝试手动更新Gemfile.lock:首先,因为它是自动生成的,其次它不打算手动更改,如果您自己更改它,您可能会混淆捆绑程序。

回答你列出:

  1. bundle install安装任何新的/更新的 gem 和依赖项 - 但如果它们已经安装,则不会执行任何操作
  2. bundle update运行您已安装的 gem,并获取最新的、允许的版本,如您中所定义的Gemfile
  3. gem install my_gem.gem绕过捆绑器,并在系统级别安装 gem(即在应用程序的代码包之外)
  4. gem update my_gem.gem绕过捆绑器,并在系统级别更新 gem(即在应用程序的代码包之外)

因此,一组命令安装(如果尚未安装),一组命令将已安装的 gem 更新到最新版本,一组命令仅在您的应用程序范围内执行这些操作(您的应用程序代码包),一组命令在系统级别执行这些操作。

Git 与您的问题无关。