用__FILE__常量奇怪的ruby行为?

问题描述:

嗨,我一直在ruby中测试一些非常基本的东西,并发现以下内容。用__FILE__常量奇怪的ruby行为?

如果我把一个称为xxxx.rb此路径中文件“C:\ Documents和Settings \桌面\ xxxx.rb”

puts __FILE__ 

并调用在命令行此红宝石文件,而无需前述红宝石输出是以下

C:/文件和设置/桌面/ xxxx.rb

,但如果我调用xxxx.rb文件与红宝石(红宝石xxxx.rb)在等的输出的命令如下:

xxxx.rb

这是为什么差值Δθ由于

PD:我在WINDOWS XP SP3

RUBY版本:1.8.6

你需要的是扩大正确的路径:

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

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

这需要你当前的工作目录进去。

+0

谢谢你的赞赏。我发现它很有用,但是我仍然对获取两个不同输出的事实只是调用文件提供了在xxxx.rb前添加ruby的细微区别的事实。如果以这种方式调用文件: Way 1:xxxx.rb 方式2:ruby xxxx.rb 我期望获得相同的结果,但它给了我不同的结果... 非常感谢。 – flyer88 2009-11-05 14:05:58

我猜,当你的文件只需双击,绝对路径被传递。你应该通过调用它想达到同样的效果:

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

+0

是的,你是对的。但我没有双击.rb文件。我只是用两种方法在cmd行提示中调用该文件。 只调用xxxx.rb第一种方式(obviousley路径是我在为C:/ Documents和设置/桌面/) 第二种方法叫红宝石xxxx.rb 我觉得有shouldn'b有差异,但好吧,打电话给你这样的文件给我的绝对路径... 虽然我仍然困惑... 谢谢。 – flyer88 2009-11-05 14:02:04