捆绑和gem安装之间的区别?

时间:2011-05-28 13:54:46

标签: ruby-on-rails gem bundler

我很确定这是一个非常基本的问题,但作为一个RoR新手,我想了解为什么有时候我会使用bundle install(从我的承诺安装所有Gems及其来自Gemfile的dependecies)和gem install [gemname] ?

两者之间有什么根本区别?我什么时候会支持gem install而不是bundle install?

谢谢! ROG

2 个答案:

答案 0 :(得分:21)

我会说:默认情况下,在本地机器上,没有特别的差别,但是......

bundle install的目的是为包含Gemfile的应用程序设置所有内容。您甚至可以传递参数,以便在您想要的任何文件夹中安装所需的gems。

通过这种方式,您可以使用自己的宝石明确区分应用程序。

另一方面,gem install gmaps4rails简易广告)为您的整个环境安装了宝石。

答案 1 :(得分:0)

我曾经认为将gem添加到gemfile中然后运行“捆绑安装”或执行“ gem install x”并没有什么区别。我认为这类似于执行“ yarn add package”与将包添加到package.json然后运行“ yarn”。

但是,当尝试设置用于轨道的Chamber Gem时,我注意到只有在运行“ gem install chamber”后,我才能够使用Chamber命令“ chamber init”。以前,当我仅将其添加到gemfile并进行捆绑安装时,运行“ chamber init”将使我在终端中出现“未知的命令室”错误。

有趣..

几乎好像运行'gem install'将其添加到全局可用的gems中(因此终端可以运行软件包的命令),而将其添加到gemfile中并运行bundle install只会将其添加到应用程序中。类似于npm install --global。