代码之家  ›  专栏  ›  技术社区  ›  Mike Stone

露比的属性文件等价?

  •  26
  • Mike Stone  · 技术社区  · 16 年前

    我需要将一些简单的属性存储在一个文件中,然后从Ruby访问它们。

    我非常喜欢.java文件中的属性文件格式(使用java. UTIL属性类)…它简单、易用、易读。

    那么,是否有一个Ruby类可以让我不费吹灰之力从这样的文件中加载一些键值对?

    我不想使用XML,所以请不要建议使用REXML(我的目的不保证“尖括号税”)。

    我已经考虑过滚动我自己的解决方案…它可能是大约5-10行代码,但我还是宁愿使用现有的库(如果它本质上是一个从文件构建的哈希值的话)。因为这会使它降到1行…


    更新:它实际上是一个直接的Ruby应用程序,不是Rails,但我认为Yaml会做得很好(它在我的脑海里,但我忘记了它……已经看过了,但还没用过),谢谢大家!

    6 回复  |  直到 16 年前
        1
  •  27
  •   Mike Stone    16 年前

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

    真的,不管是哪一种,你都可以将你的财产保存在yaml文件中,然后 YAML::Load(File.open("file")) 它。


    迈克·斯通的笔记: 实际上,最好是:

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

    YAML.load_file("file")
    

    正如Ruby文档所建议的那样,否则在垃圾收集之前不会关闭文件,但不管怎样都是好的建议:-)

        2
  •  10
  •   Aaron Hinni    16 年前

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

    例如,创建一个名为“选项”的文件

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

    然后在您的Ruby代码中执行如下操作:

    ops = eval(File.open('options') {|f| f.read })
    puts ops[:foo]
    
        3
  •  6
  •   Dan Harper    16 年前

    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
    
        4
  •  4
  •   Ross Attrill    10 年前

    因弗里尔 - http://rubydoc.info/gems/inifile/2.0.2/frames 将支持基本的.properties文件和带有[节]的.ini文件,例如

    [SECTION]
    key=value
    

    当您的数据具有复杂的结构,但可以处理空格、制表符、行尾等时,yaml是很好的—如果程序员不维护这些文件,这可能会导致问题。相比之下 .properties .ini 如果您不需要通过yaml提供的深层结构,则文件更为宽容,可能更适合。

        5
  •  3
  •   paradoja    16 年前

    Devender Gollapally写了一篇 class 要做到这一点:

    …不过我建议最好使用yaml文件。

        6
  •  2
  •   Christopher Currie    16 年前

    您可以考虑使用yaml,而不是配置文件的.properties样式。YAML在Ruby on Rails中用于数据库配置,并已在其他语言(Python、Java、Perl等)中流行。

    Ruby Yaml模块概述如下: http://www.ruby-doc.org/core/classes/YAML.html

    Yaml的主页在这里: http://yaml.org