Ruby脚本以Gem开头意味着什么?

Ruby脚本以Gem开头意味着什么?,ruby,gem,require,Ruby,Gem,Require,我正在学习Ruby,有一件事我在几个实例中看到过,但我不能理解,那就是以关键字gem开头的脚本 可以在中看到一个例子 我理解访问另一个gem时的require语句,但是gem“amqp”、“1.3.0”的确切含义是什么?这是(在当前的Ruby版本中默认需要Rubygems)。它激活特定版本的gem(在本例中为amqpgem的1.3.0版),这意味着gemlibdir(或gem指定的任何dir)将添加到您的LOAD\u路径,以及它拥有的任何从属gem的libdir 它还检查是否与任何已激活的gem

我正在学习Ruby,有一件事我在几个实例中看到过,但我不能理解,那就是以关键字gem开头的脚本

可以在中看到一个例子

我理解访问另一个gem时的require语句,但是gem“amqp”、“1.3.0”的确切含义是什么?

这是(在当前的Ruby版本中默认需要Rubygems)。它激活特定版本的gem(在本例中为
amqp
gem的1.3.0版),这意味着gem
lib
dir(或gem指定的任何dir)将添加到您的
LOAD\u路径
,以及它拥有的任何从属gem的
lib
dir

它还检查是否与任何已激活的gems版本不兼容

所有宝石在使用时都会被激活。这通常在调用
require
时发生。调用
gem
会激活gem,但并不
需要它的任何文件,因此下面的行
需要“amqp”
(注意
amqp
gem
方法引用的
amqp
gem与
amqp
文件之间的区别,后者包含在
amqp
gem中,是
方法引用的所需文件)

此方法用于确保您使用的是特定版本的gem,而不需要使用(或类似的东西)。Bundler在
Gemfile
s中也使用了
gem
方法,但这是一种不同(但类似)的方法

它还用于指定您希望使用作为标准库一部分的库的gem版本(例如,如果您希望使用更新的版本)。例如,与Ruby一起分发的Yaml库也是

gem "amqp", "1.3.0"

require "amqp"

require File.join(File.dirname(__FILE__), "base")