Java .properties файл эквивалентен для Ruby? - PullRequest
26 голосов
/ 19 сентября 2008

Мне нужно сохранить несколько простых свойств в файле и получить к ним доступ из Ruby.

Мне очень нравится формат файла .properties, который является стандартом для таких вещей в Java (с использованием класса java.util.Properties) ... он прост, удобен и легко читается.

Итак, есть ли где-нибудь класс Ruby, который позволит мне без особых усилий загрузить несколько пар ключ-значение из файла?

Я не хочу использовать XML, поэтому, пожалуйста, не предлагайте REXML (моя цель не требует "налога на угловые скобки").

Я подумал о том, чтобы развернуть свое собственное решение ... вероятно, это будет около 5-10 строк кода, но я все же предпочел бы использовать существующую библиотеку (если это по сути хэш, созданный из файла) ... так как это привело бы к 1 строке ....


ОБНОВЛЕНИЕ: На самом деле это прямое приложение на Ruby, а не рельсы, но я думаю, что YAML будет работать хорошо (это было у меня в голове, но я забыл об этом ... видел, но никогда не использовал пока) Спасибо всем!

Ответы [ 6 ]

27 голосов
/ 19 сентября 2008

Это приложение для Rails или Ruby?

На самом деле вы можете вставить свои свойства в файл yaml, а затем YAML::Load(File.open("file")) it.


ПРИМЕЧАНИЕ от Майка Стоуна: На самом деле было бы лучше сделать:

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

или

YAML.load_file("file")

, как предлагают документы ruby, в противном случае файл не будет закрыт до сборки мусора, но хорошее предложение независимо от того, что: -)

10 голосов
/ 19 сентября 2008

Другой вариант - просто использовать другой файл Ruby в качестве файла конфигурации.

Пример, создайте файл с именем 'options'

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

А затем в вашем коде Ruby сделайте что-то вроде:

ops = eval(File.open('options') {|f| f.read })
puts ops[:foo]
6 голосов
/ 19 сентября 2008

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 голосов
/ 25 марта 2013

inifile - http://rubydoc.info/gems/inifile/2.0.2/frames будет поддерживать базовые файлы .properties, а также файлы .ini с [SECTIONS], например.

[SECTION]
key=value

YAML хорош, когда ваши данные имеют сложную структуру, но могут быть сложными с пробелами, табуляцией, концом строк и т. Д., Что может вызвать проблемы, если файлы не поддерживаются программистами. Напротив, файлы .properties и .ini более простительны и могут подойти, если вам не нужна глубокая структура, доступная через YAML.

3 голосов
/ 19 сентября 2008

Девендер Голлапалли написал класс , чтобы сделать именно это:

... хотя я бы порекомендовал лучше использовать файл YAML.

2 голосов
/ 19 сентября 2008

Вместо стиля .properties файла конфигурации вы можете использовать YAML. YAML используется в Ruby on Rails для конфигурации баз данных и приобрел популярность в других языках (Python, Java, Perl и др.).

Обзор модуля Ruby YAML находится здесь: http://www.ruby -doc.org / core / classes / YAML.html

А домашняя страница YAML здесь: http://yaml.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...