如何将设置保存为外部文件中的哈希?
我可以以某种方式使用它
settings = { 'user1' => { 'path' => '/','days' => '5' }, 'user2' => { 'path' => '/tmp/','days' => '3' } }
在外部文件中作为设置?
如何将其包含在我的脚本中?
在Ruby中存储配置数据的最常用方法是使用YAML:
settings.yml
user1: path: / days: 5 user2: path: /tmp/ days: 3
然后将其加载到您的代码中,如下所示:
require 'yaml' settings = YAML::load_file "settings.yml" puts settings.inspect
您可以使用to_yaml
创建YAML文件:
File.open("settings.yml", "w") do |file| file.write settings.to_yaml end
也就是说,你也可以使用load
包含直接的Ruby代码:
load "settings.rb"
但是,您无法访问文件外的局部变量,因此您必须更改代码以使用实例变量或全局变量:
settings.rb
SETTINGS = { 'user1' => { 'path' => '/','days' => '5' }, 'user2' => { 'path' => '/tmp/','days' => '3' } } @settings = { 'foo' => 1, 'bar' => 2 }
然后加载它:
load "settings.rb" puts SETTINGS.inspect puts @settings.inspect
你也可以使用Marshal
settings = { 'user1' => { 'path' => '/','days' => '5' }, 'user2' => { 'path' => '/tmp/','days' => '3' } } data=Marshal.dump(settings) open('output', 'wb') { |f| f.puts data } data=File.read("output") p Marshal.load(data)
一个非常简单的方法是使用eval。
的config.txt
{ 'user1' => { 'path' => '/','days' => '5' }, 'user2' => { 'path' => '/tmp/','days' => '3' } }
program.rb
configuration = eval(File.read("./config.txt")) puts configuration['user1']