Java .properties文件等价于Ruby?

问题描述:

我需要在文件中存储一些简单的属性并从Ruby访问它们。Java .properties文件等价于Ruby?

我绝对喜欢.properties文件格式,它是Java中这些东西的标准(使用java.util.Properties类)......它很简单,易于使用且易于阅读。

那么,有没有一个Ruby类可以让我从文件中加载一些关键值对,而不需要付出很多努力?

我不想使用XML,所以请不要使用REXML(我的目的不保证“角支架税”)。

我已经考虑过滚动我自己的解决方案......它可能是大约5-10行的代码上面,但我仍然宁愿使用现有的库(如果它本质上是从文件构建的散列).. 。因为这将使其下降到1线....


UPDATE:这实际上是一个直的Ruby应用程序,没有护栏,但我认为YAML就很好了(这是在我的脑海里,但我忘记了......已经看到但从未使用过),谢谢大家!

这是用于Rails应用程序还是Ruby应用程序?

真的要么你可能能够将你的属性粘贴在yaml文件中然后YAML::Load(File.open("file"))它。从斯通


注:它实际上将是更好的事:

File.open("file") { |yf| YAML::load(yf) } 

YAML.load_file("file") 

为红宝石文档暗示,否则文件将不关闭,直到垃圾收集,但好建议不管:-)

+0

我嵌入式编辑的意见可能不会被察觉...... – 2008-09-19 01:15:59

+0

是啊,这是一个问题,所以评论显得如此......无形。我没有想过要在一个街区里做到这一点,太棒了! – 2008-09-19 01:27:05

取而代之.properties风格的配置文件,你可能会考虑使用YAML。 YAML在Ruby on Rails中用于数据库配置,并在其他语言(Python,Java,Perl和其他语言)中受到欢迎。

Ruby的YAML模块的概述是在这里:http://www.ruby-doc.org/core/classes/YAML.html

而且YAML的主页是在这里:http://yaml.org

Devender Gollapally写了class恰恰是要做到:

...尽管我建议最好使用YAML文件。

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 

另一种选择是简单地使用另一个Ruby文件作为配置文件。

例如,创建一个名为 '选项'

{ 
    :blah => 'blee', 
    :foo => 'bar', 
    :items => ['item1', 'item2'], 
    :stuff => true 
} 

,然后在Ruby代码执行类似的文件:

ops = eval(File.open('options') {|f| f.read }) 
puts ops[:foo] 

ini文件 - http://rubydoc.info/gems/inifile/2.0.2/frames将支持基本的.properties文件,也.ini文件与[SECTIONS]例如。

[SECTION] 
key=value 

YAML是好当你的数据结构复杂,但可以用繁琐空格,制表符,行等的结束 - 如果文件不是由程序员保持这可能会导致问题。相比之下.properties.ini文件是更宽容,如果你不需要通过YAML提供的深层结构是合适的。