2011-12-01 52 views
3

我想了解下面的Ruby /捆扎机/ RubyGems的之间的区别命令:各种方式来更新红宝石宝石

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

假设my_gem托管在rubygems.org上。我运行的是Ruby 1.8.7,RubyGems 1.8.10和Bundler 1.0.21。我也有rvm 1.8.6可用(但我不确定rvm在更新宝石时是相关的)。

另外我使用git进行版本控制。我手动更新Gemfile是否合理?或者当上述命令之一运行时会自动发生?

回答

3

Gemfile是您更改添加/删除/更新在您的应用程序中运行的宝石(或只是版本的宝石)。 Gemfile.lock是捆绑器自动更新的文件。实际上,您不应该尝试手动更新Gemfile.lock:首先,因为它是自动生成的,其次它不会被手动修改,而且如果您自己修改它,您可能会混淆bundler。

要回答你列出:

  1. bundle install安装任何新的/更新的宝石和依赖 - 但如果他们已经安装,没有通过已安装的宝石做
  2. bundle update运行,并抓住最新的,允许的版本,如您Gemfile
  3. gem install my_gem.gem绕过打捆定义,并在系统级安装宝石(即你的应用程序的代码包外)
  4. gem update my_gem.gem绕过捆绑器,并在系统级别更新宝石(即,您的应用程序的代码包)

所以,一组命令安装(如果尚未安装),一组命令更新到最新版本已安装的宝石外,一组命令做内的这些东西只有您的应用程序的范围(您的应用程序代码包)以及一组命令在系统级别执行这些操作。

Git与您的问题无关。