2009-12-23 46 views
4

我需要访问与我的Ruby脚本的位置相关的文件。访问与脚本相同的目录中的文件

我发现的唯一解决方案是使用File.dirname(__FILE__),但是,如果脚本是从符号链接运行的,则__FILE__会提供符号链接的位置。

我宁愿一个解决方案,不涉及看__FILE__,检查它是否是一个链接,如果是,找出它指向的地方。但是,如果没有其他方法,那么知道是否已经有宝石可以做到这一点很好?

回答

4

does File.expand_path help?

(没有“nix中框来试试)

+0

是的,可以解决符号链接(至少在mac osx上) – ennuikiller 2009-12-23 19:14:50

+0

不适用于我的,也OS X.也许有一个选项需要设置它来做到这一点?我正在使用'File.dirname(File.expand_path(__ FILE __))' – 2009-12-23 19:45:17

+0

我只是使用File.expand_path(“。”)作为符号链接目录。我在max osx上运行ruby 1.9 10.6 – ennuikiller 2009-12-23 20:37:51

1

您可以随时使用popen执行shell命令,如ls -l $(pwd)并解析它以遵循符号链接。对于Windows,你可以简单地执行相应的windows os命令(我假设存在!)

+0

虽然这不会在Windows上工作。 – 2009-12-23 19:05:09

+0

你甚至在Windows上如何获得'符号链接'? – AShelly 2009-12-23 19:11:04

+0

你不能,但我需要脚本在Windows和* nix上正常工作。 (Windows确实有一种专有文件格式,它在Windows上的行为就像是一个符号链接,但它们是.lnk文件) – 2009-12-23 20:39:25

3

我更喜欢以下变种:File.expand_path('../other_file_in_same_dir', __FILE__)

第二个参数是从那里相对路径将得到扩展点。这默认为当前工作目录。

相关问题