我很确定这是一个非常基本的问题,但作为一个RoR新手,我想了解为什么有时候我会使用bundle install(从我的承诺安装所有Gems及其来自Gemfile的dependecies)和gem install [gemname] ?
两者之间有什么根本区别?我什么时候会支持gem install而不是bundle install?
谢谢! ROG
答案 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。