和之间的区别';和RUBY中的File.dirname(_文件__)
我正在学习Lynda.com的Ruby课程,并开发一个小应用程序。 为了使文件便于携带,教师使用以下表格和之间的区别';和RUBY中的File.dirname(_文件__),ruby,Ruby,我正在学习Lynda.com的Ruby课程,并开发一个小应用程序。 为了使文件便于携带,教师使用以下表格 APP\u ROOT=File.dirname(\uu File\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 我理解常量文件的用途,因为它总是解析当前文件,无论其名称如何 当我键入p APP_ROOT时,它将解析为一个#=>'。据我所知,它代表当前目录 我不明白的是,如果File.dirname(\uu\u Fi
APP\u ROOT=File.dirname(\uu File\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我理解常量文件的用途,因为它总是解析当前文件,无论其名称如何
当我键入p APP_ROOT
时,它将解析为一个<代码>#=>'。
据我所知,它代表当前目录
我不明白的是,如果File.dirname(\uu\u File\uu)
总是==。
,为什么不直接使用“.”
例如,输出:
$LOAD\u PATH.unshift(File.join(APP\u ROOT,'lib'))
p$:
等于
$LOAD\u PATH.unshift(File.join('.','lib'))
p$:
当我p$:
时,每一行的结果都是一样的。File.dirname(\uuu File\uuuuu)
over.'的值是多少
还有,我到处找,但我不确定。
如果我在目录/home/one/apps
如果我输入”。
这等于apps目录,还是说包括最终目录在内的整个绝对路径?所以
实际上是/home/one/apps
而不仅仅是/apps
提前感谢。文件。目录名(\uuuuu File\uuuuu)
并不总是与当前目录相同。如果您从与文件相同的目录启动Ruby程序,它将是相同的,但是如果您从不同的目录启动,它将是不同的
例如,如果您有一个子目录subdir
,其中包含foo.rb
,内容如下:
puts File.dirname(__FILE__)
然后从父目录运行,您会得到以下结果:
$ ruby subdir/foo.rb
subdir
$ cd subdir
$ ruby foo.rb
.
但是如果您cd
进入目录,然后运行该文件,您会得到以下结果:
$ ruby subdir/foo.rb
subdir
$ cd subdir
$ ruby foo.rb
.
还有