'。'之间的差异。和RUBY中的File.dirname(__ FILE__)

时间:2018-06-16 14:43:37

标签: ruby

我正在通过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__)超过'的价值是多少?' ?

另外,我搜遍了所有人,但我不确定。 如果我在目录/home/one/apps

如果我输入'.' 是等于apps目录还是这意味着包括最终目录在内的整个绝对路径?所以.真的是/home/ones/apps而不仅仅是/apps

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

例如,如果您的子目录subdir包含foo.rb,其内容为:

puts File.dirname(__FILE__)

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

$ ruby subdir/foo.rb
subdir

但是如果您cd进入目录然后运行该文件就可以得到:

$ cd subdir
$ ruby foo.rb
.