ruby gem语句-它做什么?
我想我已经基本了解了ruby脚本顶部的require/include语句在做什么,比如ruby gem语句-它做什么?,ruby,gem,Ruby,Gem,我想我已经基本了解了ruby脚本顶部的require/include语句在做什么,比如 require 'rspec' 这些声明很容易在谷歌上搜索并找到相关结果。但有时我会看到像这样的gem声明 gem 'rspec' 这条线是干什么的 在Ruby中,gems是一个具有现成功能的包(作为其他编程语言中的库) 您在Ruby项目中使用的gems可以通过一个名为“bundler”的工具轻松管理,只需谷歌一下。您发布的代码片段是规范文件的一部分,bundler使用该文件安装和更新您为项目指定的所有库
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的主要作用是将gemslib
目录添加到加载路径。这样,加载路径的第二次搜索将找到所需的文件
通常这意味着您安装的gem的最新版本将被激活。有时,您可能希望使用不同版本的gem,为此,您可以使用。gem
方法激活gem,您可以指定所需的版本,但不需要任何文件。当您以后需要所需的文件时,您将从指定的gem版本获得它们。顺便说一句:这些都不是语句。Ruby没有语句,只有表达式。一半的答案是令人费解的胡言乱语,但很明显,这并没有回答问题,加上介绍性的句子显然是错误的。