我需要在文件中存储一些简单的属性并从Ruby访问它们.
我非常喜欢.properties文件格式,它是Java中这类东西的标准(使用java.util.Properties类)......它简单易用,易于阅读.
那么,是否有一个Ruby类可以让我从这样的文件中加载一些键值对而不需要花费太多精力?
我不想使用XML,所以请不要建议REXML(我的目的不保证"尖括号税").
我考虑过滚动我自己的解决方案......它可能是大约5到10行的代码顶部,但我仍然宁愿使用现有的库(如果它本质上是从文件构建的散列)......就像那样把它降到一线......
更新:它实际上是一个直接的Ruby应用程序,而不是rails,但我认为YAML会做得很好(它在我的脑海里,但我已经忘记了它......已经看过但从未使用过),谢谢大家!
这适用于Rails应用程序还是Ruby应用程序?
真的要么你可以将你的属性粘贴在yaml文件中,然后YAML::Load(File.open("file"))
它.
来自Mike Stone的说明:实际上做得更好:
File.open("file") { |yf| YAML::load(yf) }
要么
YAML.load_file("file")
正如ruby文档建议的那样,否则文件将不会被关闭,直到垃圾收集,但不管是好的建议:-)
另一个选择是简单地使用另一个Ruby文件作为配置文件.
例如,创建一个名为'options'的文件
{ :blah => 'blee', :foo => 'bar', :items => ['item1', 'item2'], :stuff => true }
然后在您的Ruby代码中执行以下操作:
ops = eval(File.open('options') {|f| f.read }) puts ops[:foo]
如上所述,YAML将完美地完成它.举个例子,在我的一个Ruby脚本中,我有一个YAML文件,如:
migration: customer: Example Customer test: false sources: - name: Use the Source engine: Foo - name: Sourcey engine: Bar
然后我在Ruby中使用:
config = YAML.load_file(File.join(File.dirname(__FILE__), ARGV[0])) puts config['migration']['customer'] config['sources'].each do |source| puts source['name'] end