何时添加到Gemfile以及何时通过CLI安装

时间:2011-08-14 17:23:16

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

我刚刚开始使用rails而且我有点困惑阅读不同的文档,关于何时应该将gem添加到gemfile以及何时应该只是“gem install XXX”

例如,安装rspec和guard-rspec时。我看到有些人会:

gem install rb-fsevent

有些人把它放在他们的gemfile和bundle中。

哪种方式正确,您如何知道选择哪种方式?谢谢!

2 个答案:

答案 0 :(得分:3)

Gemfile记录并管理应用程序的所有依赖项。当您在Gemfile中列出gems时,bundler会排除任何版本冲突,并确保您的应用程序使用正确版本的gem。

在新环境中设置应用程序时(例如,当您的同事从版本控制中撤消更改或部署到生产Web服务器时),Bundler可以使用gem文件来确保环境设置 - 完全像你在开发中一样。

因此,您的应用程序所依赖的任何内容(例如,您从应用程序调用的任何代码)都需要位于Gemfile中。这包括用于测试的库(尽管它们可以从生产环境中排除)。

不属于您的应用程序的宝石不需要进入Gemfile。一个例子是guard,它更像是一个开发工具,而不是一个应用程序依赖。您可以使用gem命令安装它们。

通常情况下,您要安装的大多数内容可能都需要在Gemfile中。

但是,如果使用gem命令安装它并不重要。之后你仍然可以把它放在你的Gemfile中,Bundler会知道该怎么做。

答案 1 :(得分:2)

您将在应用程序中使用的所有宝石都应放入Gemfile。

所有将为您的应用程序提供服务的宝石最好不要使用Gemfile。

例如。您需要paperclipmysql2宝石来存储图片和数据,因此请将它们放入Gemfile中。你需要magic_encoding gem做一些有用的东西。但是,直到您从控制台直接创建它,您在应用程序中不需要它。将其与您的应用分开。

在编写代码时使用测试框架,因此将它们放入Gemfile中。

您使用passenger gem来部署您的应用,但您永远不需要在代码中使用它 - 不要将其放入Gemfile。