在我的Ruby项目中,我使用了很多东西,比如在几个远程盒子上移动和编辑文件,我真的需要一些东西,比如到我的根项目目录的相对路径。我有很多处理文件夹,它们在很多方法中使用。现在我已经把路径硬编码了,但是这让我很不高兴。
0h4hbjxa1#
你可以得到当前目录(目录的当前文件)与此
File.dirname(__FILE__)
然后,可以使用到根的相对路径将其连接起来
File.join(File.dirname(__FILE__), '../../') # add proper number of ..
或者可以使用expand_path将相对路径转换为绝对路径。
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 # => ../../..
pkln4tw62#
__dir__
从Ruby 2开始,你可以简单地使用内核函数:__dir__来获取当前文件的绝对目录路径,例如,你可以在项目开始时在(config.rb,environments.rb,constants.rb,或者你称之为它的任何东西)中设置一个常量ROOT_DIR。请参见Ruby文档
:__dir__
6kkfgxo03#
ROOT_DIR = File.expand_path(".")
3条答案
按热度按时间0h4hbjxa1#
你可以得到当前目录(目录的当前文件)与此
然后,可以使用到根的相对路径将其连接起来
或者可以使用
expand_path
将相对路径转换为绝对路径。或者你可以计算两个目录之间的相对路径。
pkln4tw62#
从Ruby 2开始,你可以简单地使用内核函数
:__dir__
来获取当前文件的绝对目录路径,例如,你可以在项目开始时在(config.rb,environments.rb,constants.rb,或者你称之为它的任何东西)中设置一个常量ROOT_DIR。请参见Ruby文档
6kkfgxo03#