首页 > 解决方案 > '.' 之间的区别 和 RUBY 中的 File.dirname(__FILE__)

问题描述

我正在学习 Lynda.com Ruby 课程并构建一个小应用程序。为了使文件可移植,老师使用下面的这个表格。

APP_ROOT = File.dirname(__FILE__)

我理解常量FILE的用途,因为它总是解析当前文件,无论其名称是什么。

当我键入p APP_ROOT时,它解析为 . # => '.'我理解代表这个当前目​​录。

我不明白为什么,如果File.dirname(__FILE__)总是 == '.',为什么不直接使用 '.' ?

例如输出:

$LOAD_PATH.unshift( File.join(APP_ROOT, 'lib'))

p $:

等于

$LOAD_PATH.unshift( File.join('.', 'lib'))

p $:

当我p $:得到任何一条线的相同结果时。File.dirname(__FILE__)over '.'的值是多少??

另外,我到处搜索,但我不确定。如果我在目录中/home/one/apps

如果我输入'.' 是否等于应用程序目录或这是否意味着包括最终目录在内的整个绝对路径?所以.真的/home/ones/apps不只是/apps

提前致谢。

标签: ruby

解决方案


File.dirname(__FILE__) 并不总是与当前目录相同。如果您从与文件相同的目录启动 Ruby 程序,这将是相同的,但如果您从不同的目录启动,则会有所不同。

例如,如果您有一个subdir包含foo.rb以下内容的子目录:

puts File.dirname(__FILE__)

然后从父目录运行你得到这个:

$ ruby subdir/foo.rb
subdir

但是如果你cd进入目录然后运行文件你会得到这个:

$ cd subdir
$ ruby foo.rb
.

推荐阅读