2010-02-17 85 views
2

所以我想在Ruby中創建一個相對於它所在目錄的文件路徑。Ruby中的文件路徑

我有一個項目,我希望它能夠找到該文件,無論項目解壓到什麼目錄。 (比如說代碼運行在不同的機器上)我無法想象出我的生活。

這似乎是需要我可以這樣做:

require File.dirname(__FILE__) + '/comparison' 

我可以爲一個文件,是在不同的目錄比我src文件夾中做什麼?

而是上市,

file = 'C:/whole path/long/very_long/file.txt' 

我想說:

file = 'file.txt' 

file = File.helpful_method + 'file.txt' 

回答

3
file = File.join(File.dirname(__FILE__), '..', 'another_dir', 'file.txt') 

更換'..', 'another_dir'與相對路徑段即到達'file.txt'

+0

這適用於file = .....,但是當我確實需要File時,它不能解析(.........) –

+0

需要File.join(File.dirname(____ FILE____) ,'..','resources','date_extension.rb')給我這個錯誤:沒有這樣的文件加載 - C:/用戶/亞歷克斯和寶拉/文檔/軟件項目/ RubyCyrusSorterApp /規格/ .. /resources/date_extension.rb –

+0

@Alex Baronosky,是'C:/ Users/Alex和Paula/Documents/Software Projects/RubyCyrusSorterApp/resources'中的date_extension.rb? –

0

如果你正在運行的Ruby 1.9.2或更高版本,可以使用require_relative代替:

require_relative '../somewhere/file.rb' 

這不能解決通過相對路徑引用文件的一般問題,但如果你'要做的是要求文件,它應該工作。