项目目录的相对路径

时间:2012-02-23 15:59:38

标签: ruby

在我的Ruby项目中,我使用了一些东西,例如在几个远程盒子上移动和编辑文件,我真的需要像我的根项目目录的相对路径。我有许多处理文件夹,用于许多方法。

现在我的路径硬编码,但这让我感到不快。

2 个答案:

答案 0 :(得分:97)

您可以使用此

获取当前目录(当前文件的目录)
File.dirname(__FILE__)

然后,您可以使用相对路径

加入它
File.join(File.dirname(__FILE__), '../../') # add proper number of ..

或者您可以使用expand_path将相对路径转换为绝对路径。

ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', File.dirname(__FILE__))

或者你可以计算两个目标之间的相对路径。

require 'pathname'; 
puts Pathname.new('/').relative_path_from(Pathname.new('/some/child/dir/')).to_s
# => ../../..

答案 1 :(得分:18)

__dir__

从Ruby 2开始,您只需使用内核函数:__dir__来获取当前文件的绝对目录路径。因此,举一个例子,你可以在(config.rb,environments.rb,constants.rb或你称之为的任何东西)的项目开头设置一个常量ROOT_DIR。

请参阅Ruby Documentation