2008-10-25 106 views
23

如何获取rakefile.rb所在的目录?耙和当前目录

我想用这个作为我的根目录找到一切。

+0

您是否考虑过Dir.pwd的答案?看起来更合适:http://ruby-doc.org/core/classes/Dir.html#M002316 – 2010-07-28 16:28:32

+1

Dir.pwd在启动rake命令时为您提供目录,您在哪里。这不一定是rakefile的地方。 – user1934428 2015-07-28 10:27:43

回答

37

使用__FILE__指定文件位置获取文件名,那么你可以从那里得到的目录:

test.rb

puts __FILE__ 

输出:

/users/foo/test.rb 

__FILE__解析为完整路径该文件是在

使用此获得迪尔的名字:

File.dirname(__FILE__) 
+14

这大部分是正确的,但在Rakefile需要其他文件并且该文件需要知道Rakefile的位置的情况下是错误的;在这种情况下`Rake.application.original_dir`就是你想要的。 – TALlama 2011-10-06 19:23:25

2

如果这是一个RoR应用程序,您的Rakefile.rb应该位于您的RAILS_ROOT目录中。因此,在任何脚本,您可以像

config.load_paths += %W(#{RAILS_ROOT}/extras) 
19

你可以通过调用application.original_dir方法得到它。在任务中您可以实现应用程序对象使用应用程序方法上的任务对象。

+1

我不认为这解决了OP的问题,但这是我寻找的答案。 :) – 2012-05-21 22:42:55

6

为什么不直接使用Dir.pwd