Frage

Ich muss einige einfache Eigenschaften in einer Datei speichern und von Ruby auf sie zugreifen.

Ich liebe das .Properties -Dateiformat, das für solche Dinge in Java (mit der Klasse von Java.util.Properties) Standard ist ... es ist einfach, einfach zu bedienen und einfach zu lesen.

Gibt es irgendwo eine Ruby -Klasse, in der ich einige Schlüsselwertpaare aus einer solchen Datei ohne viel Aufwand laden kann?

Ich möchte XML nicht verwenden. Bitte schlagen Sie RexML nicht vor (mein Zweck garantiert nicht die "Winkelhaltersteuer").

Ich habe darüber nachgedacht, meine eigene Lösung zu rollen ... es wäre wahrscheinlich ungefähr 5-10 Zeilen von Code-Tops, aber ich würde immer noch lieber eine vorhanden Bringen Sie es auf 1 Zeile herunter ....


UPDATE: Es ist eigentlich eine gerade Ruby -App, keine Rails, aber ich denke !

War es hilfreich?

Lösung

Ist das für eine Rails -Anwendung oder eine Rubin?

Wirklich mit beiden, können Sie möglicherweise Ihre Eigenschaften in eine YAML -Datei und dann in eine YAML -Datei stecken YAML::Load(File.open("file")) es.


Hinweis von Mike Stone: Es wäre tatsächlich besser zu tun:

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

oder

YAML.load_file("file")

Wie die Ruby-Dokumente vermuten lassen, wird die Datei ansonsten erst geschlossen, bis die Müllsammlung vorliegt, aber ein guter Vorschlag, unabhängig davon :-)

Andere Tipps

Eine andere Option besteht darin, einfach eine andere Ruby -Datei als Konfigurationsdatei zu verwenden.

Beispiel Erstellen Sie eine Datei namens "Optionen"

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

Und dann in Ihrem Ruby -Code so etwas wie:

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

Yaml wird es wie oben beschrieben perfekt tun. Zum Beispiel habe ich in einem meiner Ruby -Skripte eine YAML -Datei wie:

migration:
  customer: Example Customer
  test:     false
sources:
- name:     Use the Source
  engine:   Foo
- name:     Sourcey
  engine:   Bar

was ich dann innerhalb von Ruby als:

config = YAML.load_file(File.join(File.dirname(__FILE__), ARGV[0]))
puts config['migration']['customer']

config['sources'].each do |source|
  puts source['name']
end

Inifile - http://rubydoc.info/gems/inifile/2.0.2/frames unterstützt grundlegende .Properties -Dateien und auch .ini -Dateien mit [Abschnitten], z.

[SECTION]
key=value

YAML ist gut, wenn Ihre Daten eine komplexe Struktur haben, kann jedoch mit Leerzeichen, Registerkarten, Zeilen usw. fummeln - was möglicherweise Probleme verursachen kann, wenn die Dateien nicht von Programmierern gepflegt werden. Im Gegensatz .properties und .ini Dateien sind verzeihender und können geeignet sein, wenn Sie die tiefe Struktur nicht über YAML benötigen.

Devender Gollapally schrieb a Klasse genau das tun:

... obwohl ich besser empfehlen würde, eine YAML -Datei zu verwenden.

Anstelle des .properties -Stils der Konfigurationsdatei können Sie YAML verwenden. Yaml wurde in Ruby on Rails für die Datenbankkonfiguration verwendet und hat in anderen Sprachen (Python, Java, Perl und andere) immer beliebter geworden.

Ein Überblick über das Ruby Yaml -Modul ist hier: http://www.ruby-doc.org/core/classes/yaml.html

Und die Homepage von Yaml ist hier: http://yaml.org

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top