在Ruby中,$:.push是什么意思?

16

我在 surveyor gem 的 Gemspec 文件中找到这个东西。以下代码的作用是什么?

$:.push File.expand_path("../lib", __FILE__)
require "surveyor/version"

$:.push 的作用是什么?在我看来,它只是要求 ../lib/surveyor/version 文件。如果是这样,我能否只用以下一行代码替换它呢?

require File.expand_path('../lib/surveyor/version', __FILE__)

这两个东西是一样的吗?如果不是,它们之间有什么区别?


4
仅作为一点说明:在我看来,将 $LOAD_PATH << File.expand_path ... 改为 $LOAD_PATH.unshift(File.expand_path ...) 可以让代码更易读,意思不变。 - Niklas B.
确实,谢谢你的提示 :) - CuriousMind
3
Symbolhound.com 对于搜索这样的语法非常有用。 - Andrew Grimm
1个回答

17

$: 是 Ruby 的加载路径,因此实际上是将包含 __FILE__ 的文件夹中的子文件夹 /lib 添加到该数组中,以便从该 gem 中可以使用 require 引用其他文件。


基本上是避免编写完整路径的快捷方式。就是这样。谢谢! - CuriousMind
@Gaurish:不仅如此,这个 gem 还可以假定它在加载路径中,如果你通过完整路径引用它而没有将其添加到加载路径中,则加载将失败。 - Niklas B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接