请参见以下示例:
puts __FILE__ #test.rb
puts File.expand_path(__FILE__) #C:/TEMP/test.rb
Dir.chdir('..')
puts __FILE__ #test.rb
puts File.expand_path(__FILE__) #C:/test.rb
在(全局)之后chdir
返回expand_path
错误的结果。
我怎样才能得到正确的结果?
我尝试使用的第二个参数File.expand_path
:
puts File.expand_path(__FILE__, 'temp') #C:/TEMP/test.rb
puts File.expand_path(__FILE__, 'c:/temp') #C:/TEMP/test.rb
但要使用它,我必须知道它的路径__FILE__
。
该命令require_relative
似乎忽略了所有chdir
动作。所以我有希望,有一种方法可以获取文件的“真实”目录。
评论:
- 我知道Dir.chdir 的块版本- 对于我的特定任务,我不能使用它。
- 我的实际解决方案:我在更改目录之前存储完整路径(我也可以
Dir.pwd
在更改目录之前存储)。