Изучаем Ruby

Майкл Фитцджеральд

Оглавление
Об авторе 2
Предисловие 3
Кому следует читать эту книгу? 3
Как работать с этой книгой 3
О примерах 4
Как организована эта книга 5
Соглашения, принятые в этой книге 6
Комментарии и вопросы 7
Safari® Enabled 7
Благодарности 8
Глава 1. Основные положения 9

Hello, Matz 10
Очень короткая программа на языке Ruby 11
Shebang! 12
Запуск системной команды 13
Добавление в конец строки 13
Дублирование 14
Вставка команды из командной строки 14
Использование переменной 14
Подстановка выражения 15
Форматирование строки 15
Метод eval и параметр -e 16
Ввод данных с клавиатуры 17
Методы 17
Блок 17
Метод each 18
Процедурный объект 18
XML 18
Класс 19
Инструментарий Tk 20
Редактирование и выполнение программ в TextMate 20
Interactive Ruby 22
Информационные ресурсы 23
Установка Ruby 25
Установка Ruby в Mac OS X Tiger 26
Установка Ruby в Windows с помощью One-Click Installer 29
Установка двоичных файлов Ruby в Windows 30
Установка Ruby в Linux 32
В разрешении отказано 32
Сопоставление типа файлов в Windows 32
Вопросы для самопроверки 34
Глава 2. Обзорная экскурсия по Ruby 35

Ruby — объектно-ориентированный язык 35
Класс Object и модуль Kernel 37
Зарезервированные слова языка Ruby 38
Комментарии 40
Переменные 41
Локальные переменные 43
Переменные экземпляра 43
Переменные класса 43
Глобальные переменные 43
Константы 44
Параллельное присваивание 44
Строки 45
Регулярные выражения 46
Числа и операторы 47
Условные операторы 48
Массивы и хэши 49
Методы 50
Возвращаемые значения 51
Соглашение о присвоении имен методам 52
Параметры по умолчанию 54
Переменное число параметров 54
Псевдонимы методов 55
Блоки 56
Оператор yield 57
Процедурные объекты (procs) 59
Символы 61
Обработка исключений 62
Документация по языку Ruby 62
Вопросы для самопроверки 63
Глава 3. Любовь к условным операторам 65

Оператор if 65
Использование else и elsif 68
Трехместный оператор 69
Оператор case 70
Цикл while 71
Да что ты говоришь! 73
Операторы unless и until 74
Метод loop 75
Цикл for 76
Метод times 77
Метод upto 78
Метод downto 79
Выполнение кода до или после программы 80
Вопросы для самопроверки 80
Глава 4. Строки 81

Создаем строки 81
Строки с общими ограничителями 83
Документ "здесь и сейчас" 83
Конкатенация строк 84
Получаем доступ к строкам 85
Сравниваем строки 87
Обрабатываем строки 88
Вставляем строку в строку 89
Заменяем всю строку или ее часть 89
Методы chomp и chop 90
Метод delete 91
Заменяем подстроку 92
Переверни их 92
От строки к массиву 93
Преобразуем регистр клавиатуры 93
Выполняем итерации в строке 94
downcase, upcase и swapcase 95
Управляем пробельными символами 95
Выполняем инкремент строки 97
Преобразуем строки 98
Регулярные выражения 99
Версия 1.9 и выше 104
Вопросы для самопроверки 105
Глава 5. Математика 107

Иерархия классов и включенных в них модулей 108
Преобразуем числа 109
Элементарные математические операции 110
Деление и округление 111
Равно, меньше чем или больше чем 112
Операторы сокращенного присваивания 112
Операторы 114
Диапазоны 115
Запросы, касающиеся чисел 116
Итеративное вычисление через блоки 117
Еще больше математических методов 118
Математические функции 119
Рациональные числа 120
Простые числа 122
Шутки ради 123
Вопросы для самопроверки 123
Глава 6. Массивы 125

Создаем массивы 126
Драим палубу 127
Создаем массивы с помощью блока 127
Существует более простой способ 127
Еще более простой способ 128
Получаем доступ к элементам 129
Конкатенация 131
Операции над множествами 132
Уникальные элементы 133
Очищаем стек 133
Сравниваем массивы 134
Изменяем элементы 135
Как строка 135
Применяем shift и unshift 136
Удаляем элементы 136
Массивы и блоки 137
Прямая и обратная сортировки 137
Многомерные массивы 138
Версия 1.9 и выше 139
Другие методы работы с массивами 139
Вопросы для самопроверки 140
Глава 7. Хэши 141

Создаем хэш 141
Получаем доступ к хэшам 143
Выполняем итерации 144
Изменяем хэши 145
Объединяем хэши 145
Сортируем хэш 146
Удаляем и очищаем хэш 146
Замещаем хэш 148
Преобразуем хэш в другие классы 148
Версия 1.9 и выше 149
Другие методы класса Hash 149
Вопросы для самопроверки 150
Глава 8. Работа с файлами 151

Каталоги 151
Заглянем в каталог 152
Поток каталога 153
Создаем новый файл 153
Открываем существующий файл 154
ARGV и ARGF 155
Открываем URI 156
Удаляем и переименовываем файлы 157
Файловые запросы 158
Изменяем режимный код файла и владельца 159
Класс IO 160
Вопросы для самопроверки 163
Глава 9. Классы 165

Определяем класс 166
Переменные экземпляра 167
Аксессоры 169
Переменные класса 172
Методы класса 173
Одноэлементные классы 173
Наследование 175
Модули 177
Методы public, private и protected 179
Вопросы для самопроверки 181
Глава 10. С Ruby не соскучишься 183

Форматирование вывода с помощью sprintf 183
Обработка XML 188
REXML 188
Builder 191
Date и Time 193
Класс Time 193
Класс Date 196
Рефлексия 199
Рефлексия для переменных и констант 201
Рефлексия для методов 202
Применение Tk 203
Метапрограммирование 207
RubyGems 208
Обработка исключений 214
Создание документации с помощью RDoc 216
Основы RDoc 217
Обработка файлов с помощью RDoc 222
Embedded Ruby 226
Вопросы для самопроверки 230
Глава 11. Краткий курс по Ruby on Rails 231

Откуда взялась среда Rails? 231
Почему Rails? 232
Полный пакет среды разработки 233
Не повторяйтесь 233
Соглашение по конфигурации 234
Хочу мою MVC 234
Скрипты 235
Подтверждение правильности 235
Ajax 236
Миграции 236
Консоль 236
Среда и тестирование 236
Capistrano 237
Rake 237
Что другие делают с Rails? 238
Услуги по размещению Rails 241
Установка Rails 241
Применение RubyGems для установки Rails 241
Дополнительная информация по установке 244
Изучаем Rails 244
Обучающие руководства и книги по Ruby 245
Краткое руководство 246
Вопросы для самопроверки 254
ПРИЛОЖЕНИЯ 255
Приложение 1. Справочник по Ruby 257
Интерпретатор Ruby 257
Зарезервированные слова языка Ruby 258
Операторы 260
Escape-символы 261
Предопределенные переменные 262
Глобальные константы 266
Регулярные выражения 267
Директивы распаковки в String 269
Директивы упаковки в Array 272
Флажки и типы полей для sprintf 273
Файловые тесты 275
Директивы форматирования времени 277
Опции RDoc 278
Rake 280
Приложение 2. Ответы на вопросы для самопроверки 283