Относительный путь к каталогу вашего проекта - PullRequest
50 голосов
/ 23 февраля 2012

В моем проекте Ruby я использую кучу вещей, таких как перемещение и редактирование файлов на нескольких удаленных блоках, и мне действительно нужно что-то вроде относительного пути к моей корневой директории проекта.У меня есть много папок обработки, которые используются во многих методах.

Прямо сейчас у меня есть жестко запрограммированные пути, но это делает меня несчастным.

Ответы [ 2 ]

99 голосов
/ 23 февраля 2012

Вы можете получить текущий каталог (каталог текущего файла) с помощью этого

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
# => ../../..
20 голосов
/ 16 апреля 2015
__dir__

Начиная с Ruby 2, вы можете просто использовать Kernel-функцию :__dir__, чтобы получить абсолютный путь к каталогу текущего файла. Итак, чтобы привести пример, вы можете установить константу ROOT_DIR в начале вашего проекта в (config.rb, environment.rb, constants.rb или как вы это называете).

См. Документация по Ruby

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...