$ :. push在ruby中做什么?

Cur*_*ind 16 ruby rubygems gemspecs

我在测量师宝石的 Gemspec文件中找到了这个.以下几行有什么作用?

$:.push File.expand_path("../lib", __FILE__)
require "surveyor/version"
Run Code Online (Sandbox Code Playgroud)

为什么这样$:.push做?对我而言,它看起来就像requires../lib/surveyor/version文件.如果是这样,我不能只用一行替换它吗?

require File.expand_path('../lib/surveyor/version', __FILE__)
Run Code Online (Sandbox Code Playgroud)

两者都是一样的吗?如果没有,那又有什么区别?

Mch*_*chl 17

$:是Ruby的加载路径,所以它实际上是添加了一个文件夹的子/lib文件夹,其中__FILE__驻留在这个数组中,因此来自这个gem的其他文件可以是required.