ruby gem语句-它做什么?

ruby gem语句-它做什么?,ruby,gem,Ruby,Gem,我想我已经基本了解了ruby脚本顶部的require/include语句在做什么,比如 require 'rspec' 这些声明很容易在谷歌上搜索并找到相关结果。但有时我会看到像这样的gem声明 gem 'rspec' 这条线是干什么的 在Ruby中,gems是一个具有现成功能的包(作为其他编程语言中的库) 您在Ruby项目中使用的gems可以通过一个名为“bundler”的工具轻松管理,只需谷歌一下。您发布的代码片段是规范文件的一部分,bundler使用该文件安装和更新您为项目指定的所有库

我想我已经基本了解了ruby脚本顶部的require/include语句在做什么,比如

require 'rspec'
这些声明很容易在谷歌上搜索并找到相关结果。但有时我会看到像这样的gem声明

gem 'rspec'

这条线是干什么的

在Ruby中,gems是一个具有现成功能的包(作为其他编程语言中的库)

您在Ruby项目中使用的gems可以通过一个名为“bundler”的工具轻松管理,只需谷歌一下。您发布的代码片段是规范文件的一部分,bundler使用该文件安装和更新您为项目指定的所有库

如果您正在开发RubyonRails,那么使用gems和bundler管理它们是非常常见的,可以说是最佳实践

Gems之所以伟大,是因为有太多有用的库可以扩展默认功能,例如rails,而且您可以使用现成的库

有关gem的列表,请访问rubygems.org

在ruby代码中,
内核中定义的gem(gem\u name,*requirements)
告诉ruby加载特定版本的
gem\u name
。当您安装了同一gem的多个版本时,这非常有用

例如,如果您安装了两个版本的
rspec
,例如
2.12.0
2.13.0
,则可以在
要求之前调用
gem
,以使用特定版本。请注意,
gem
应该位于
require
调用之前

gem'rspec','=2.12.0'
需要“rspec”
没有版本的
gem'gem_name'
在您的计算机上使用最新版本,这是不必要的。您可以在不使用
gem
的情况下调用
require
,以获得相同的行为


此外,在Bundler::Dsl中,
gem
用于告诉Bundler准备/安装特定版本的ruby-gems。您将在

中看到,Rubygems之前的
require
的原始行为是搜索
$LOAD_FILES
变量中列出的所有目录以查找文件,并加载它找到的第一个匹配的目录。如果没有找到匹配的文件,
require
将引发
LoadError

Rubygems改变了这个过程。使用Rubygems,
require
将像以前一样搜索现有的
$LOAD\u路径
,但如果没有找到匹配的文件,Rubygems将搜索您机器上安装的gems以查找匹配项。如果找到包含匹配文件的gem,则会激活该gem,然后重复
$LOAD\u PATH
搜索。激活gem的主要作用是将gems
lib
目录添加到加载路径。这样,加载路径的第二次搜索将找到所需的文件


通常这意味着您安装的gem的最新版本将被激活。有时,您可能希望使用不同版本的gem,为此,您可以使用。
gem
方法激活gem,您可以指定所需的版本,但不需要任何文件。当您以后需要所需的文件时,您将从指定的gem版本获得它们。

顺便说一句:这些都不是语句。Ruby没有语句,只有表达式。一半的答案是令人费解的胡言乱语,但很明显,这并没有回答问题,加上介绍性的句子显然是错误的。