Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
ages = list.age # Массив: возрасты всех людей.
names = list.name # Массив: имена всех людей.
В KirbyBase есть ограниченные средства печати отчетов; достаточно вызвать метод
to_report
rpt = books.select.sort(:title).to_report
puts rpt
# Выводится:
# recno | title | author
# -----------------------------------------------------------
# 2 | Democracy in America | Alexis de Tocqueville
# 1 | The Case for Mars | Robert Zubrin
# 3 | The Ruby Way | Hal Fulton
Атрибут таблицы
encrypt
true
db.create_table(:mytable, f1, :String, f2, :Date) {|t| t.encrypt = true }
Поскольку удаленный доступ — интересное средство, уделим ему немного внимания. Вот пример сервера:
require 'kirbybase'
require 'drb'
host = 'localhost'
port = 44444
db = KirbyBase.new(:server) # Создать экземпляр базы данных.
DRb.start_service("druby://#{host} :#{port)", db)
DRb.thread.join
Это прямое применение интерфейса dRuby (см. главу 20). На стороне клиента следует при подключении к базе данных задать символ
:client
:local
db = KirbyBase.new(:client,'localhost',44444)
# Весь остальной код не изменяется.
Можно также выполнять обычные операции: обновлять и удалять записи, удалять таблицы и т.д. Есть и более сложные механизмы, о которых я не буду рассказывать подробно: связи один-ко-многим, вычисляемые поля и нестандартные классы записей. Подробнее см. документацию по KirbyBase на сайте RubyForge.
10.4. Подключение к внешним базам данных
Благодаря усилиям многих людей Ruby может взаимодействовать с разными базами данных, от монолитных систем типа Oracle до более скромного MySQL. Для полноты описания мы включили в него также текстовые файлы в формате CSV.
Уровень функциональности, реализованный в этих пакетах, постоянно изменяется. Обязательно познакомьтесь с последней версией документации в сети. Неплохой отправной точкой станет архив приложений Ruby.
10.4.1. Интерфейс с SQLite
SQLite — популярная база данных для тех, кто ценит программное обеспечение, которое не нужно конфигурировать. Это небольшая автономная исполняемая программа, написанная на языке С, которая хранит всю базу данных в одном файле. Хотя обычно она используется для небольших баз, но теоретически способна управиться с терабайтными объемами.
Привязка Ruby к SQLite довольно прямолинейна. API, написанный на С, обернут в класс
SQLite::API
В большинстве ситуаций вам будет достаточно класса
SQLite::Database
require 'sqlite'
db = SQLite::Database.new("library.db")
db.execute("select title,author from books") do |row|
p row
end
db.close
# Выводится:
# ["The Case for Mars", "Robert Zubrin"]
# ["Democracy in America", "Alexis de Tocqueville"]
# ...
Если блок не задан, то метод
execute
ResultSet
rs = db.execute("select title,author from books")
rs.each {|row| p row } # Тот же результат, что и выше.
rs.close
Если получен объект
ResultSet
reset
next
eof?
rs = db.execute("select title,author from books")
while ! rs.eof?
rec = rs.next
p rec # Тот же результат, что и выше.
end
rs.close
Методы библиотеки могут возбуждать различные исключения. Все они являются подклассами класса
SQLite::Exception
Отметим еще, что библиотека написана так, что может работать совместно с библиотекой
ArrayFields
sqlite
arrayfields
ResultSet
Hash
Хотя библиотека
sqlite