Книга: Программирование на языке Ruby
10.2.8. Библиотека DBM
10.2.8. Библиотека DBM
DBM
— платформенно-независимый механизм для хранения строк в файле, как в хэше. И ключ, и ассоциированные с ним данные должны быть строками. Интерфейс dbm
включен в стандартный дистрибутив Ruby.
Для использования этого класса нужно создать объект DBM, указав для него имя файла, а дальше работать с ним, как с обычным хэшем. По завершении работы файл следует закрыть.
require 'dbm'
d = DBM.new("data")
d["123"] = "toodle-oo!"
puts d["123"] # "toodle-oo!"
d.close
puts d["123"] # RuntimeError: закрытый DBM-файл.
e = DBM.open("data")
e["123"] # "toodle-oo!"
w=e.to_hash # {"123"=>"toodle-oo!"}
e.close
e["123"] # RuntimeError: закрытый DBM-файл.
w["123"] # "toodle-oo!
Интерфейс к DBM реализован в виде одного класса, к которому подмешан модуль Enumerable
. Два метода класса (синонимы) new
и open
являются синглетами, то есть в любой момент времени можно иметь только один объект DBM, связанный с данным файлом.
q=DBM.new("data.dbm") #
f=DBM.open("data.dbm") # Errno::EWOULDBLOCK:
# Try again - "data.dbm"
Всего есть 34 метода экземпляра, многие из которых являются синонимами или аналогичны методам хэша. Почти все операции с настоящим хэшем применимы и к объекту dbm
.
Метод to_hash
создает представление файла в виде хэша в памяти, а метод close
закрывает связь с файлом. Остальные методы по большей части аналогичны методам хэшам, однако дополнительно есть методы rehash
, sort
, default
, default=
. Метод to_s
возвращает строковое представление идентификатора объекта.
- 10.2.1. Простой маршалинг
- 10.2.2. Более сложный маршалинг
- 10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
- 10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore
- 10.2.5. Работа с данными в формате CSV
- 10.2.6. Маршалинг в формате YAML
- 10.2.7. Преобладающие объекты и библиотека Madeleine
- 10.2.8. Библиотека DBM
- База данных dbm
- Подпрограммы dbm
- 17.2.1. Библиотека setup.rb
- 15.2.1. Стандартная библиотека rss
- Библиотека Ext Core
- А.2.4. Библиотека ccmalloc
- 13.2. Локали и библиотека С
- 15.5.1. Библиотека dbug — усовершенствованный printf()
- Клиентская библиотека Firebird
- Стандартная библиотека ввода
- API, POSIX и библиотека С
- Библиотека Oracle XDK