我正在通过Lynda.com Ruby类(class)并正在构建一个小型应用程序。
为了使文件可移植,老师使用以下表格。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
提前致谢。
最佳答案
File.dirname(__FILE__)
并不总是与当前目录相同。如果从与文件相同的目录中启动Ruby程序,则将是相同的;但是,如果从不同的目录中启动,则将有所不同。
例如,如果您有一个子目录subdir
,其中包含foo.rb
及其内容:
puts File.dirname(__FILE__)
然后从父目录运行,您将获得以下信息:
$ ruby subdir/foo.rb
subdir
但是,如果您将
cd
放入目录中,然后运行文件,则会得到以下信息:$ cd subdir
$ ruby foo.rb
.
关于ruby - RUBY中 '.'和File.dirname(__ FILE__)之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50888889/