2009-11-04 55 views
0

嗨,我一直在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

回答

2

你需要的是擴大正確的路徑:

# 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

2

我猜,當你的文件只需雙擊,絕對路徑被傳遞。你應該通過調用它想達到同樣的效果:

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