ruby - '.' 之间的区别 和 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
提前致谢。
解决方案
File.dirname(__FILE__)
并不总是与当前目录相同。如果您从与文件相同的目录启动 Ruby 程序,这将是相同的,但如果您从不同的目录启动,则会有所不同。
例如,如果您有一个subdir
包含foo.rb
以下内容的子目录:
puts File.dirname(__FILE__)
然后从父目录运行你得到这个:
$ ruby subdir/foo.rb
subdir
但是如果你cd
进入目录然后运行文件你会得到这个:
$ cd subdir
$ ruby foo.rb
.
推荐阅读
- reactjs - 重新加载反应应用程序时显示的Django Rest url页面
- android-studio - 如何使用 kotlin 制作时隙
- r - 如何按 R 上的日期与两年之间的时间合并?
- reactjs - Onpress 等待一个函数完成,然后在 React Native 中继续
- excel - 如何按 A 列中的日期排序,但将 B 列中具有重复项的所有条目放在一起,而不考虑第一个条目之后的日期?
- java - 如何使用单循环在两个数组中找到相同的元素?
- opencv - OpenCv获取到圆心的边缘距离
- sql - 如何编写查询以在 SQL 中排除一个部门中至少有一个 30 岁的人的所有员工
- python - 我想在 for 循环中串联运行多个变量,我想取 x 和 y 的每次迭代的总和
- cuda - %envregN 特殊寄存器保存什么?