İç kullanım için bir taş yapıyorum. İçinde başka bir dizinden bazı YAML yüklemek: Doğrusu initializer.rb
için data/root.yaml
göreli konumuna bağlı olmayan ediyorumRuby'deki belirli bir göreli yoldan dosyaları nasıl yüklerim?
# 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
. Bunun yerine, <project_root>
'a bir referans almayı tercih ediyorum ve oradaki göreli yola bağlıyım, bu da daha akıllı bir hareket gibi görünüyor.
İlk olarak, bunun için en iyi yol bu mu? İkincisi, eğer öyleyse, bunu nasıl yaparım? Çeşitli File
yöntemlerini inceledim, ancak böyle bir şey olduğunu düşünmüyorum. Ruby 1.9 kullanıyorum.
# in lib/magicwand/magicwand.rb
module MagicWand
# Project root directory.
ROOT = File.expand_path("../..", __FILE__)
end
ama ben de bu yaklaşımı gibi emin değilim.
yapmak (yani ana dosya ve
root.yaml
arasındaki göreli yolu olduğunu varsayarak)data/root.yaml
göreli yolunu almak için,$0
olacak İyi bir fikir, ancak testler sırasında, tam uygulama yığınını ateşlemek yerine, sınıfları doğrudan test ettiğimde kırılırdı. $ 0'm bu gibi durumlarda farklı olurdu (test yürütücüsüne giden yol, uygulamam değil). –Aramayı, sınama sırasında ekleyebileceğiniz basit bir nesneye sarın. – Theo