__FILE__常量的奇怪的红宝石行为?

时间:2009-11-04 20:15:52

标签: ruby file behavior

您好我在ruby中测试了一些非常基本的东西并发现了以下内容。

如果我在此路径中输入名为xxxx.rb的文件“C:\ Documents and Settings \ Desktop \ xxxx.rb”

puts __FILE__

并在命令行中调用此ruby文件,不带前面的ruby,输出如下

  

C:/ Documents and Settings / Desktop / xxxx.rb

但如果我在命令中使用 ruby​​ (ruby xxxx.rb)调用xxxx.rb文件,则输出如下:

  

xxxx.rb

为什么会有这种差异?感谢

PD:我在WINDOWS XP SP3上

RUBY VERSION:1.8.6

2 个答案:

答案 0 :(得分:2)

我猜你只需双击文件就会传递绝对路径。您应该通过调用它来实现相同的效果:

ruby C:/Documents and Settings/Desktop/xxxx.rb

答案 1 :(得分:2)

您想要的是正确扩展路径:

# Affected by the current working directory, etc.
puts __FILE__

# Always an absolute path
puts File.expand_path(__FILE__, Dir.getwd)

这会考虑您当前的工作目录。