在rails中使用Gemfile有什么用?

时间:2012-12-28 16:51:53

标签: ruby-on-rails ruby gemfile

导轨中Gemfile的用途是什么?

如何使用Gemfile

5 个答案:

答案 0 :(得分:88)

在Rails开发过程中,有时您会想要提供一些您需要的功能,但要么您不知道该怎么做,要么您不想自己实现它有才华的开发人员已经开发了很多工作。

您可能需要的这些开发(用户身份验证,消息系统,资产处理程序,地理位置,分页系统,链接到外部服务,如Amazon AWS,以及最后但并非最不重要的Rails本身)称为Ruby Gems。这些是ruby软件包,不一定与Rails有关,但由于Rails基于Ruby,因此98%的宝石可用于您的Rails webapp代码。

github可以找到很多宝石,但通过ruby-gemsruby-toolbox

搜索宝石更有乐趣

您的gemfile是您要包含在项目中的所有宝石的列表。 它与bundler(也是一个宝石)一起用于安装,更新,删除和管理您使用过的宝石。

gemfile有另一个目的 - 您可以在:development:test:assets:production等组中对宝石进行分组,Rails会知道何时包括宝石。例如:

group :development, :test do
    gem "rspec-rails"
    gem "factory_girl_rails"
    gem "guard-rspec"
end

请注意,在Rails 4上,assets组已被弃用

这些宝石属于开发环境和测试环境,因为它们用于测试应用程序。你不需要它们在生产环境中可用(你可以,但这会不必要地使内存膨胀)。

所以 - 要使用gemfile,只需编写您要安装的gem,例如

gem 'devise'

请务必事先安装bundler(在您的控制台/ cmd / ssh中)

$ gem install bundler

然后在控制台中写入

bundle install

你会注意到另一个gemfile出现了! Gemfile.lock 正如您将看到的那样,如果您使用文本阅读器打开它,则会列出所有宝石及其版本及其依赖项。当您需要知道安装了哪些版本的gem时,这将非常有用。

有关Gemfile - read on the bundler page

的更多信息,请参阅

有关选择宝石的信息,您可以从this

开始

祝你好运,玩得开心!


好的,那么这个创建的Gemfile.lock是什么?

Gemfile.lock,顾名思义就是对已安装的所有gem的所有版本进行锁定。因此,如果Gemfile是需要安装的,那么锁定文件就是安装的,以及实际启动和运行应用程序所需的版本。

如果您没有该特定版本的Gem(如Gemfile.lock中所指定),rails会抱怨并且您必须安装缺少的gem(通过bundle install)或手动修复任何冲突(我相信捆绑商会给你一些线索)

有关Gemfile.lock

的一些事项
  • 如果您意外删除它,它将在您运行bundle install时重新生成。如果你意外删除了Gemfile,那你就不走运了..你应该使用git:)
  • Heroku不关心Gemfile.lock,因为它将重新安装所有宝石。所以对于Heroku,你必须设置你想要的宝石版本,否则Heroku将始终安装宝石的最新版本,这可能会导致问题
  • 将Gemfile.lock保留在项目中,这样您就可以随时了解哪些版本的gem可以让您的应用正常运行。

答案 1 :(得分:10)

GemfileBundler的配置,用于管理应用程序的Ruby依赖项。该网站包含大量文档,包括Gemfile manual page

答案 2 :(得分:3)

我会试着给出一个简单的答案

类比解释

假设你想要开车。从头开始。现在这将成为一场噩梦。你需要建立:底盘,发动机,腐蚀器,散热器,冷却,通风等等。

宝石允许您使用其他人之前制作的汽车零件

但你并不是唯一一个制造汽车的人。曾经制造汽车的每个人基本上都做了同样的事情。在你出现之前,有很聪明的人出去过并制造了内燃机............实际上没关系。

你不需要重新发明轮子。当您可以直接获得最好的设备时,为什么要自己制作?如果您能够获得最好的引擎之一,由世界上最有才华的工程师创建,而不需要抬起手指,该怎么办?你要花一年时间试图自己创作吗?

所以基本上不是自己制作所有东西,而是写下你需要的所有部分的购物清单。这基本上是一个宝石文件:

  • 劳斯莱斯发动机
  • AutoLive安全带
  • Michellin轮胎。
  • PIAA夜间车灯
  • 等等。

我的朋友,基本上是你的宝石文件!

答案 3 :(得分:1)

您的系统可以拥有大量宝石......因此可以拥有相同gem的多个版本。

Gemfile指定运行rails应用程序时应使用/加载/ {安装(如果不存在)的gems列表versions。或bundle exec . .

的任何内容

答案 4 :(得分:0)

首先,什么是宝石?

根据维基百科:

  

RubyGems是Ruby编程语言的包管理器   提供了分发Ruby程序的标准格式   库

的Gemfile

  

Gemfile是我们创建的文件,用于描述gem   Ruby程序的依赖项

现在,用非常简单的话说:

Gem可以被认为是一个可以在代码中使用的库。 示例:faker gem

您的代码可以使用faker gem的功能来生成虚假数据。

现在,您可以在gemfile中列出项目所需的所有gem。 当您进行捆绑安装时,将为您安装gemfile中的所有gem。