Rails - 宝石安装

时间:2011-07-31 17:40:33

标签: ruby ruby-on-rails-3 rubygems

关于gem安装的快速问题 - 当我使用bundle install时,我知道它会安装我个人项目所需的宝石,但它不会影响我计算机上的其他项目。如果我使用gem install name_of_gem那只会影响当前项目,还是会影响我的计算机上使用rails(通用安装)的所有项目?总的来说,我觉得我对宝石安装的确切工作方式有点困惑,所以如果你的答案可以包含一些一般的背景信息,以帮助我理解这一点,那就太棒了!

2 个答案:

答案 0 :(得分:1)

当您进行捆绑安装时,宝石 安装在rubygems上,并且可用于您的所有项目,除非您使用RVM并为项目设置gemsets。

当您不使用RVM并且执行 gem install 时,您的操作系统可能会在您当前用户的文件(通常为〜/ .gem)上安装gem,如果您 sudo install gem 它将安装在你的系统Ruby安装位置的任何地方。

我真的建议你设置RVM管理单独的宝石和红宝石组。您可以阅读上面链接的网站或a simple tutorial I wrote to use it

答案 1 :(得分:1)

是的,宝石通常是在系统范围内安装的,或者在您的主​​目录中是不可能的。默认情况下,当您的应用程序使用gem时,RubyGems会加载最新安装的版本。如果您想使用特定版本,RubyGems允许您使用以下语法执行此操作:

require 'rubygems'
gem 'RedCloth', '3.0'

Bundler是一个有用的工具,可以跟踪用于开发项目的gem的版本,然后允许您使用bundle install一次性安装它们,并且还可以加载那些确切的版本。应用程序通过加载Bundler代码加载它们,该代码覆盖部分RubyGems以使用Gemfile中指定的版本。

默认情况下,Bundler只是调用RubyGems来安装gem(再次,在系统范围内或在homedir中)。您可以要求它使用vendor/cache将宝石存储在名为bundle package的目录中。这使您可以“冻结”宝石,以便您可以使用源代码分发它们。

如果你想进一步隔离你的Ruby环境,你应该使用RVM,它允许你设置隔离的gemsets,实际上是不同版本的Ruby,用于不同的项目。当您使用RVM时,RubyGems安装内容的目录将被覆盖,并且特定于您当前的Ruby版本和gemset。

我建议您阅读RubyGemsBundler的文档;他们都很好。