我需要访问与我的Ruby脚本的位置相关的文件。访问与脚本相同的目录中的文件
我发现的唯一解决方案是使用File.dirname(__FILE__)
,但是,如果脚本是从符号链接运行的,则__FILE__
会提供符号链接的位置。
我宁愿一个解决方案,不涉及看__FILE__
,检查它是否是一个链接,如果是,找出它指向的地方。但是,如果没有其他方法,那么知道是否已经有宝石可以做到这一点很好?
我需要访问与我的Ruby脚本的位置相关的文件。访问与脚本相同的目录中的文件
我发现的唯一解决方案是使用File.dirname(__FILE__)
,但是,如果脚本是从符号链接运行的,则__FILE__
会提供符号链接的位置。
我宁愿一个解决方案,不涉及看__FILE__
,检查它是否是一个链接,如果是,找出它指向的地方。但是,如果没有其他方法,那么知道是否已经有宝石可以做到这一点很好?
does File.expand_path
help?
(没有“nix中框来试试)
您可以随时使用popen执行shell命令,如ls -l $(pwd)并解析它以遵循符号链接。对于Windows,你可以简单地执行相应的windows os命令(我假设存在!)
虽然这不会在Windows上工作。 – 2009-12-23 19:05:09
你甚至在Windows上如何获得'符号链接'? – AShelly 2009-12-23 19:11:04
你不能,但我需要脚本在Windows和* nix上正常工作。 (Windows确实有一种专有文件格式,它在Windows上的行为就像是一个符号链接,但它们是.lnk文件) – 2009-12-23 20:39:25
我更喜欢以下变种:File.expand_path('../other_file_in_same_dir', __FILE__)
第二个参数是从那里相对路径将得到扩展点。这默认为当前工作目录。
是的,可以解决符号链接(至少在mac osx上) – ennuikiller 2009-12-23 19:14:50
不适用于我的,也OS X.也许有一个选项需要设置它来做到这一点?我正在使用'File.dirname(File.expand_path(__ FILE __))' – 2009-12-23 19:45:17
我只是使用File.expand_path(“。”)作为符号链接目录。我在max osx上运行ruby 1.9 10.6 – ennuikiller 2009-12-23 20:37:51