Программирование на языке Ruby
Шрифт:
Обычно
Эта техника ориентирована на транзакции; в начале блока обрабатываемые данные читаются с диска. А в конце прозрачно для программиста записываются на диск.
Мы можем завершить транзакцию досрочно, вызвав метод
Внутри транзакции можно вызвать метод
10.2.5. Работа с данными в формате CSV
CSV (comma-separated values — значения, разделенные запятыми) — это формат, с которым вам доводилось сталкиваться, если вы работали с электронными таблицами или базами данных. К счастью, Хироси Накамура (Hiroshi Nakamura) написал для Ruby соответствующий модуль и поместил его в архив приложений Ruby.
Имеется также библиотека FasterCSV, которую создал Джеймс Эдвард Грей III (James Edward Gray III). Как явствует из названия, она работает быстрее, к тому же имеет несколько видоизмененный и улучшенный интерфейс (хотя для пользователей старой библиотеки есть «режим совместимости»). Во время работы над книгой велись дискуссии о том, следует ли сделать библиотеку FasterCSV стандартной, заменив старую библиотеку (при этом ей, вероятно, будет присвоено старое имя).
Ясно, что это не настоящая база данных. Но более подходящего места, чем эта глава, для нее не нашлось.
Модуль CSV (
• разделитель записей: CR + LF;
• разделитель полей: запятая (,);
• данные, содержащие символы CR, LF или запятую, заключаются в двойные кавычки;
• двойной кавычке внутри двойных кавычек должен предшествовать еще один символ двойной кавычки ("->"");
• пустое поле в кавычках обозначает пустую строку (данные,"",данные);
• пустое поле без кавычек означает NULL (данные,,данные).
В настоящем разделе мы рассмотрим лишь часть функциональных возможностей библиотеки. Этого достаточно для введения в предмет, а самую актуальную документацию, как всегда, можно найти в сети (начните с сайта ruby-doc.org).
Начнем с создания файла. Чтобы вывести данные, разделенные запятыми, мы просто открываем файл для записи; метод open передает объект-писатель в блок. Затем с помощью оператора добавления мы добавляем массивы данных (при записи они преобразуются в формат CSV). Первая строка является заголовком.
В результате исполнения этого кода мы получаем такой файл
Отмороженный 8.0
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
рейтинг книги
Имя нам Легион. Том 19
19. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
рейтинг книги
Моров. Том 3
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
рейтинг книги
Законы Рода. Том 7
7. Граф Берестьев
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
В лапах зверя
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
рейтинг книги
Первый среди равных. Книга IV
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Черный Маг Императора 13
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
рейтинг книги
Я еще граф. Книга #8
8. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Я еще не барон
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Купеческая дочь замуж не желает
Фантастика:
фэнтези
рейтинг книги
Монстр из прошлого тысячелетия
5. Соприкосновение миров
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Кадет Морозов
4. Живой лёд
Фантастика:
боевая фантастика
рейтинг книги
Офицер Красной Армии
2. Командир Красной Армии
Фантастика:
попаданцы
рейтинг книги