Gemfile在rails中的用途是什么?

Gemfile在rails中的用途是什么?

如何使用Gemfile

在你开发Rails的过程中,有时候你会想要提供一些你需要的function,但是你不知道该怎么做,或者你不想自己去实现它,因为很多有才华的开发人员已经将其工作发展到了一个新的阶段。

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

许多gem可以在github中find,但它的function通过ruby或ruby工具箱searchgem

您的gemfile是您想要包含在项目中的所有gem的列表。 它与bundler (也是一个gem)一起使用来安装,更新,删除和以其他方式pipe理您使用过的gem。

gemfile有另外一个目的 – 你可以将gem分为:development:test:assets:production等组,并且Rails会知道何时包含这些gem。 例如:

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

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

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

所以 – 要使用gemfile ,只需编写你想安装的gem,比如

 gem 'devise' 

请确保事先安装bundler (在您的console / cmd / ssh中)

 $ gem install bundler 

然后在控制台中写入

 bundle install 

你会注意到另一个gemfile出现! Gemfile.lock这个文件,你会看到,如果你用文本阅读器打开它,用你的版本和它们的依赖关系列出你所有的gem。 当你需要知道你安装了哪些版本的gem时,这会很有用。

有关Gemfile更多信息,请阅读捆绑器页面

有关selectgem的信息,你可以从这开始

祝好运并玩得开心点!


好的,这是什么Gemfile.lock创build?

Gemfile.lock,顾名思义是locking所有安装的gem版本。 因此,如果Gemfile是需要安装的,那么locking文件就是安装的,实际需要哪些版本来启动和运行应用程序。

如果你没有特定版本的Gem(如Gemfile.lock中指定的),rails会发出抱怨,你将不得不安装缺less的gem(通过bundle install )或手动修复任何冲突(我相信bundler会给你一些线索)

有关Gemfile.lock一些Gemfile.lock

  • 如果您意外删除它,则在运行bundle install时将会重新生成。 如果你不小心删除了Gemfile ,那你运气不好。你应该用git 🙂
  • Heroku不关心Gemfile.lock,因为它会重新安装所有的gem。 因此,对于Heroku,您必须设置您想要的gem版本,否则Heroku将始终安装最新版本的gem,这可能会导致问题
  • 将Gemfile.lock保留在您的项目中,以便您始终知道什么版本的gem会使您的应用程序正常工作。

Gemfile是Bundler的configuration,用于pipe理应用程序的Ruby依赖项。 该网站包含了很多文档,包括Gemfile手册页 。

我会尽量给出一个简单的答案

比喻解释

假设你想制造一辆车。 从头开始。 现在这将是一场噩梦。 你需要build造:底盘,发动机,执行器,散热器,冷却,通风等等。

gem允许您使用其他人以前制造的汽车零件

但是你并不是唯一一个build造汽车的人。 谁曾经build造过车的人都基本上做了同样的事情。 在那之前,已经有聪明的人出去制造了内燃机等等……其实没关系。

你不需要重新发明轮子。 为什么要自己做,只需要简单地从架子上拿到最好的设备? 如果你能find世界上最有才华的工程师创造的最好的引擎之一,而又不用动手指呢? 你会花一年时间来尝试创造自己的?

所以,基本上,而不是自己做所有事情,你写下你需要的所有部分的购物清单。 这基本上是一个gem文件:

  • 劳斯莱斯引擎
  • AutoLive安全带
  • Michellin轮胎。
  • PIAA夜间大灯
  • 等等

那我的朋友,基本上是你的gem文件!

你的系统可以有很多的gem…因此可以有多个相同的gem版本。

一个Gemfile指定了它们的versions列表,当你运行你的rails应用程序时,这些versions将被使用/加载/(如果不存在,安装)。 或任何与bundle exec . . bundle exec . .

首先,什么是gem?

根据维基百科:

RubyGems是Ruby编程语言的包pipe理器,它提供了一个用于分发Ruby程序和库的标准格式

的Gemfile

Gemfile是我们创build的文件,用于描述Ruby程序的gem依赖关系

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

gem可以被认为是你可以在你的代码中使用的库。 例如: faker gem

你的代码可以使用faker gem的function来产生假的数据。

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