导轨中Gemfile
的用途是什么?
如何使用Gemfile
?
答案 0 :(得分:88)
在Rails开发过程中,有时您会想要提供一些您需要的功能,但要么您不知道该怎么做,要么您不想自己实现它有才华的开发人员已经开发了很多工作。
您可能需要的这些开发(用户身份验证,消息系统,资产处理程序,地理位置,分页系统,链接到外部服务,如Amazon AWS,以及最后但并非最不重要的Rails本身)称为Ruby Gems。这些是ruby软件包,不一定与Rails有关,但由于Rails基于Ruby,因此98%的宝石可用于您的Rails webapp代码。
github可以找到很多宝石,但通过ruby-gems或ruby-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:)答案 1 :(得分:10)
Gemfile
是Bundler的配置,用于管理应用程序的Ruby依赖项。该网站包含大量文档,包括Gemfile manual page。
答案 2 :(得分:3)
我会试着给出一个简单的答案
类比解释
假设你想要开车。从头开始。现在这将成为一场噩梦。你需要建立:底盘,发动机,腐蚀器,散热器,冷却,通风等等。
宝石允许您使用其他人之前制作的汽车零件
但你并不是唯一一个制造汽车的人。曾经制造汽车的每个人基本上都做了同样的事情。在你出现之前,有很聪明的人出去过并制造了内燃机............实际上没关系。
你不需要重新发明轮子。当您可以直接获得最好的设备时,为什么要自己制作?如果您能够获得最好的引擎之一,由世界上最有才华的工程师创建,而不需要抬起手指,该怎么办?你要花一年时间试图自己创作吗?
所以基本上不是自己制作所有东西,而是写下你需要的所有部分的购物清单。这基本上是一个宝石文件:
我的朋友,基本上是你的宝石文件!
答案 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。