我在Windows上运行Ruby,虽然我不知道这是否有什么不同。我所要做的就是获取当前工作目录的绝对路径。这可能从irb吗?显然,在脚本中可以使用File.expand_path(__FILE__)

但是从irb,我尝试了以下,得到了一个“权限被拒绝”错误:

File.new(Dir.new(".").path).expand

当前回答

文件。expand_path file .dirname(__FILE__)将返回相对于调用此命令的文件的目录。

但Dir。PWD返回工作目录(结果与在终端中执行PWD相同)

其他回答

这将为您提供当前文件的工作目录。

File.dirname(__FILE__)

例子:

current_file:“/用户/ nemrow / SITM / folder1 / folder2 / amazon.rb”

论点:“/ \用户nemrow SITM / folder1 - folder2 "

文件。expand_path file .dirname(__FILE__)将返回相对于调用此命令的文件的目录。

但Dir。PWD返回工作目录(结果与在终端中执行PWD相同)

至于相对于当前执行脚本的路径,因为Ruby 2.0也可以使用

__dir__

所以这基本上和

File.dirname(__FILE__)

通过这种方式,您可以获得位于任何目录中的任何文件的绝对路径。

File.join(Dir.pwd,'some-dir','some-file-name')

它会返回

=> "/User/abc/xyz/some-dir/some-file-name"

如果你想获取当前rb文件目录的完整路径:

File.expand_path('../', __FILE__)