trong HOME/path_test/Tôi có:của Ruby tải cấu hình (yaml) tập tin trong cùng một thư mục như là nguồn
load_test.rb:
require 'yaml'
cnf = YAML::load(File.open('config.yml'))
puts cnf['Hello']
config.yml:
Hello: world!!!
khi trong HOME/path_test/Tôi nhận được như mong đợi:
-bash-3.2$ ruby load_test.rb
world!!!
khi trong HOME/(cd ..) tôi nhận được
-bash-3.2$ ruby path_test/load_test.rb
path_test/load_test.rb:3:in `initialize': No such file or directory - config.yml (Errno::ENOENT)
from path_test/load_test.rb:3:in `open'
from path_test/load_test.rb:3:in `<main>'
Đó là hành vi đúng, nhưng không phải những gì tôi đã mong ước cho :)
Có cách nào để tải các tập tin .yml tương đối so với nguồn tập tin, và không liên quan đến DIR hiện tại làm việc ??
Solution (load_Test.rb):
require 'yaml'
fn = File.dirname(File.expand_path(__FILE__)) + '/config.yml'
cnf = YAML::load(File.open(fn))
puts cnf['Hello']
Cảm ơn (một ')' quá nhiều vào lúc kết thúc:]) chỉ là những gì tôi cần – FelixHJ
Đây là giải pháp đầy đủ (chia thành 2 dòng để rõ ràng): 'require' yaml ' fn = File.dirname (Tệp .expand_path (__ FILE__)) + '/config.yml' cnf = YAML :: tải (File.open (fn)) đặt cnf ['Hello'] ' – FelixHJ
Hmm tôi không thể nhận được định dạng để làm việc .... – FelixHJ