Подтвердить что ты не робот

Java.properties эквивалент файла для Ruby?

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

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

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

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

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


UPDATE: это просто приложение Ruby, а не рельсы, но я думаю, что YAML будет хорошо (он был в моей памяти, но я забыл об этом... видел, но никогда не использовал его), спасибо всем!

4b9b3361

Ответ 1

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

Действительно, либо вы можете использовать свои свойства в файле yaml, а затем YAML::Load(File.open("file")).


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

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

или

YAML.load_file("file")

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Devender Gollapally написал класс, чтобы сделать именно это:

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

Ответ 5

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

[SECTION]
key=value

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

Ответ 6

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

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

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