【问题标题】:What does $:.push do in ruby?$:.push 在红宝石中有什么作用?
【发布时间】:2012-04-29 14:27:34
【问题描述】:

我在 surveyor gem 的 Gemspec 文件中找到了这个。以下行是做什么的?

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

为什么$:.push 会这样?在我看来,它只是 requires ../lib/surveyor/version 文件。如果是这样,我不能用以下一行替换它吗?

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

这两个是一样的吗?如果不是,那有什么区别?

【问题讨论】:

  • 只是一个旁注:$LOAD_PATH << File.expand_path ... 做同样的事情,看起来有点不那么模糊,恕我直言。
  • 确实,感谢您的提示 :)
  • Symbolhound.com 对于搜索这样的语法很有用。

标签: ruby rubygems gemspecs


【解决方案1】:

$: 是 Ruby 的加载路径,所以它实际上是将 __FILE__ 所在文件夹的子文件夹 /lib 添加到该数组中,以便该 gem 中的其他文件可以是 required。

【讨论】:

  • 基本上是必须写完整路径的快捷方式。这就解释了。谢谢!
  • @Gaurish:不仅如此。 gem 可以假设它位于加载路径中,如果您通过完整路径需要它,它将无法加载,而不会将其添加到加载路径中。
猜你喜欢
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
相关资源
最近更新 更多