【发布时间】:2010-09-19 04:32:32
【问题描述】:
如何获取rakefile.rb所在的目录?
我想用它作为我的根目录来定位所有东西。
【问题讨论】:
-
您考虑过 Dir.pwd 的答案吗?似乎更合适:ruby-doc.org/core/classes/Dir.html#M002316
-
Dir.pwd 在启动 rake 命令时为您提供您所在的目录。这不一定是 rakefile 的位置。
如何获取rakefile.rb所在的目录?
我想用它作为我的根目录来定位所有东西。
【问题讨论】:
使用__FILE__ 获取文件名,然后您可以从那里获取目录:
在test.rb
puts __FILE__
输出:
/users/foo/test.rb
__FILE__ 解析为它所在文件的完整路径。
使用它来获取目录名称:
File.dirname(__FILE__)
【讨论】:
Rake.application.original_dir 就是你想要的。
你可以通过调用application.original_dir方法获取。在任务中,您可以使用任务对象上的 application 方法来实现 application 对象。
【讨论】:
为什么不直接使用 Dir.pwd
?
【讨论】:
从 Ruby 2 开始,您可以使用 __dir__ instead of File.dirname(__FILE__) 来获取包含当前脚本的目录。
【讨论】:
如果这是一个 RoR 应用程序,您的 Rakefile.rb 应该在您的 RAILS_ROOT 目录中。因此,在任何脚本中,您都可以指定文件位置,例如
config.load_paths += %W( #{RAILS_ROOT}/extras )
【讨论】: