为什么irb -r使__FILE__成为绝对路径?

时间:2012-12-14 06:58:45

标签: ruby irb

foo.rb是puts __FILE__

的单行
irb -r ./foo.rb

给了我foo.rb的绝对路径。如果我运行ruby foo.rb,这不是行为。为什么会发生在irb?

irb 0.9.6(09/06/30), 红宝石1.9.3p327

1 个答案:

答案 0 :(得分:4)

在IRB中发生这种情况的原因与如果您编写了一个名为bar.rb的程序具有以下内容的原因相同。

require './foo'

您会发现使用IRB和您的要求与调用具有要求的bar.rb没有什么不同。

来自文档:

  

__FILE__ - 当前正在执行的文件的名称,包括   相对于启动应用程序的目录的路径   (或当前目录,如果已更改)。

因此,这包括相对于启动应用程序的目录的路径。谁知道irb或bar在哪里?如果不清楚,那么也会给出路径。