Rails : gem install vs. gemfile & bundle install

8
使用以下两种方式有什么确切的区别?
1. 使用 "gem install [gemname]" 2. 将 gem 名称和版本添加到 GemFile 中并运行 "bundle install"
1个回答

10

RubyGems(红宝石宝石库)类似于 Ruby 的包管理器。通过它,您可以安装自包含的库以用于应用程序开发。当您使用 gem install gemname 命令时,您将该宝石库安装到当前正在进行开发的计算机上。

Bundler(宝石库捆绑工具)是一款用于管理应用程序所依赖的宝石库的工具。当您创建 Gemfile 时,会列出应用程序需要的各种宝石库及其版本号。这样,当您将应用程序部署到新位置(例如,推送到 Heroku)时,您只需轻松确保应用程序具备所需的所有宝石库依赖关系。

运行 bundle install 命令将获取您 Gemfile 中列出的所有必需宝石库,并安装它们(如果它们尚未安装),就像为您的应用程序单独使用 gem install 命令安装每个宝石库一样。


谢谢!但我想知道如果我使用 gem install 安装所有 4example 15 个 Gem,是否与将它们放入 Gemfile 并运行 bundle install 相同?我不这么认为,因为 bundle install 会花费太多时间,并且经常会出现许多错误,而 gem install 则可以更快地安装 Gems,通常没有错误! - user2078158
很难确切地说为什么Bundler比gem install慢,因为缺乏其他细节,但是Bundler会自动检查并安装所有依赖的gem的新版本(即使您没有明确声明,但是这些gem是您声明的gem的依赖项),这可能使其比gem install慢。 - rayashmanjr
因为依赖关系,所以你说对于GemFile中的所有宝石都手动运行gem install,不会使应用程序工作吗?! - user2078158
gem install 会尝试获取依赖项(如果我没记错的话,会提示或使用 --include-dependencies)。Bundler 只是让这个过程更容易。理想情况下,在将应用程序移植到新环境后,键入 bundle install 比为所有 gem 进行 gem install 更容易。 - rayashmanjr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接