宝石命令。那是什么意思

时间:2010-05-25 06:08:19

标签: ruby

有时我见过以下代码。

gem 'factory_girl','= 1.2.3'
require 'factory_girl'

我试着看一下gem doc但是找不到上面代码中第一行代码的答案?

2 个答案:

答案 0 :(得分:4)

您在gem文档中寻找的内容是Coding with Rubygems

第一行基本上是从gems的安装目录中说“嘿,从这个版本获取这个gem”并将其加载到环境中。这主要是为了帮助您向require添加版本依赖项,而不仅仅是单独执行require 'factory_girl'

编辑:为了补充下面的Jörg,我认为Ryan Tomayko有一个非常好的short and sweet article关于为什么这样做是“错误的”。

答案 1 :(得分:1)

正如@theIV已经解释的那样,这会激活factory_girl gem,使用完全(因为=符号)版本1.2.3

但请注意,这是非常糟糕的练习,永远不会完成。如果在代码中手动激活gems,则意味着不使用RubyGems的人无法再使用您的代码。

RubyGems是一个包管理器。您的代码永远不会关心用于安装它的软件包管理器。有些人更喜欢RubyGems,一些dpkg / APT,一些RPM / YUM,一些RPM / APT,一些RPM / URPMI,一些RPM / YaST2,Portage,FreeBSD端口,pkgsrc,MacPorts,slashpackage,CoAPP,Conary,Slackware。他们有很多。有些人喜欢不使用任何包管理器 。或者,他们仅使用RubyGems进行下载,然后将gem解压缩到他们的vendor目录中。

如果您在代码中使用gem方法,则所有这一切都无法奏效。