【发布时间】:2010-06-19 14:42:04
【问题描述】:
我正在制作一个供内部使用的宝石。在其中,我从另一个目录加载了一些 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
但我也不确定我是否喜欢这种方法。
【问题讨论】: