Относительный путь к вашей директории проекта
В моем проекте Ruby я использую беспорядок таких вещей, как перемещение и редактирование файлов на нескольких удаленных ящиках, и мне действительно нужно что-то вроде относительного пути к моему корневому каталогу проектов. У меня много каталогов, которые используются во многих методах.
Сейчас у меня есть жесткие жесты, но это делает меня несчастным.
Ответы
Ответ 1
Вы можете получить текущий каталог (каталог текущего файла) с помощью этого
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
# => ../../..
Ответ 2
__dir__
С Ruby 2 вы можете просто использовать Kernel-функцию :__dir__
, чтобы получить абсолютный путь к каталогу текущего файла. Итак, чтобы привести пример, вы можете установить константу ROOT_DIR в начале вашего проекта в (config.rb, environment.rb, constants.rb или что бы вы там ни называли).
См. Ruby Documentation