Я делаю драгоценный камень для внутреннего использования. В нем я загружаю YAML из другого каталога:
# in <project_root>/bin/magicwand
MagicWand::Configuration::Initializer.new(...)
# in <project_root>/lib/magicwand/configuration/initializer.rb
root_yaml = YAML.load_file(
File.expand_path("../../../../data/#{RootFileName}", __FILE__))
# in <project_root>/data/root.yaml
---
apple: 100
banana: 200
coconut: 300
Я бы предпочел не зависеть от местоположения data/root.yaml
относительно initializer.rb
. Вместо этого я предпочел бы получить ссылку на <project_root>
и зависеть от относительного пути оттуда, что кажется более разумным ходом.
Во-первых, это лучший способ сделать это? Во-вторых, если это так, как мне это сделать? Я проверил различные File
методы, но я не думаю, что есть что-то подобное. Я использую Ruby 1.9.
Прямо сейчас я создаю специальную константу и вместо этого полагаюсь:
# in lib/magicwand/magicwand.rb
module MagicWand
# Project root directory.
ROOT = File.expand_path("../..", __FILE__)
end
но я не уверен, что мне тоже нравится такой подход.