RoR - разработка

Ruby On Rails

  • Архитектура приложений Rails
  • Установка Rails
  • Немедленное использование
  • Интернет-магазин
    • Задача 3: тестирование
    • Задача А: ведение учета товаров
    • Задача Б: отображение каталога товаров
    • Задача В: создание корзины
    • Задача Г: усиливаем приложение за счет использования AJAX
    • Задача Д: оформление покупки
    • Задача Е: администрирование
    • Задача Ж: окончательная доработка
  • Углубленное изучение Rails
  • Active Support
  • Миграции
  • Active Record
    • Основы
    • Связи между таблицами
    • Жизненный цикл объекта
  • Action Controller: маршрутизация и URL
  • Action Controller и Rails
  • Action View
  • Веб 2.0
  • Action Mailer
  • Веб-службы Rails
  • Безопасность и развертывание приложения
    • Организация защиты Rails-приложения
    • Развертывание и эксплуатация
  • Справка по Ruby
Главная

Rails и базы данных

Примеры данной книги написаны с использованием MySQL (версии 5.0.22 или
ближайших к ней). Если вы хотите в точности следовать приведенному в них коду,
то проще всего и вам воспользоваться MySQL. Если вы решите использовать
другое средство, то больших проблем не возникнет.
Возможно, вам понадобится внести незначительные изменения в какие-либо
явно выраженные фрагменты SQL в приводимом нами коде, но Rails во многом
избавляет приложения от SQL-инструкций, специфичных для применяемых баз
данных.
ПАРОЛИ БАЗ ДАННЫХ
____________________________________________________________
Возможно, это примечание покажется вам весьма спорным. Вполне очевидно, что на базу данных,
используемую в коммерческих целях, вам захочется установить пароль. Тем не менее
большинство Rails-разработчиков, похоже, не сочли за труд сделать это с базами данных, используемых
при разработке. Бывает, многие ленятся до такой степени, что при разработке даже
не меняют имя основного пользователя SQL (root). Опасно ли это? Некоторые считают, что да,
но среднестатистическая машина разработчика находится (или должна находиться) под защитой
брандмауэра. Работая с MySQL, вы можете пойти еще дальше и запретить удаленный доступ
к базе данных, установив настройку на игнорирование сетевых запросов. Итак, в этой книге
мы предположили, что вы поддались общей тенденции. Если вопреки нашим предположениям
вы создали индивидуальных пользователей базы данных и (или) установили пароли,
вам следует скорректировать параметры подключения и вводимые команды (к примеру, если
у вас установлен пароль, то к команде MySQL следует добавить параметр -р). За информацией
о том, как создать безопасную установку MySQL для коммерческого использования, вы можете
обратиться к интернет-ресурсам и изучить статью на веб-сайте Security Focus (http://www.
securityfocus.com/infocus/1726).
____________________________________________________________
Для связи кода вашего приложения с машиной базы данных вам понадобятся
два уровня программного обеспечения. Первый уровень — это драйвер базы данных,
представляющий собой Ruby-библиотеку, подключающую низкоуровневый
API базы данных к высокоуровневому миру программирования на языке Ruby.
Поскольку базы данных обычно поставляются с интерфейсными библиотеками,
доступными из языка С, наши Ruby-библиотеки также пишутся на С и должны
быть откомпилированы специально для вашей среды окружения1. Второй уровень
программного обеспечения представляет собой Rails-адаптер базы данных.
Ему отводится место между библиотекой Ruby и вашим приложением. Каждая
библиотека базы данных будет иметь свой собственный API, зависящий от
конкретной базы. Rails-адаптеры баз данных скрывают эти различия, поэтому
Rails-приложения не нуждаются в сведениях о том, с какой именно базой данных
они работают.
Драйвер базы данных MySQL устанавливается при выполнении шагов, рассмотренных
в начале этой главы. Возможно, если вы собираетесь всего лишь изучать
Rails, то этого будет вполне достаточно и вы можете спокойно переходить
к изучению раздела 3.7, «Своевременное обновление».
Если же вы читаете эти строки, значит, вы хотите подключиться к базе данных,
отличной от MySQL. Rails работает с DB2, MySQL, Oracle, Postgres, Firebird,
SQL Server и SQLite. Для всех остальных баз данных, кроме MySQL, вам
нужно установить драйвер базы данных и библиотеку, которую Rails сможет использовать
для подключения к машине базы данных и работы с ней. В данном
разделе приводятся ссылки и инструкции, позволяющие осуществить эти действия.
Все драйверы баз данных написаны на языке С и распространяются в основном
в виде исходных кодов. Если вы не желаете утруждать себя созданием драйвера
из исходников, внимательно просмотрите веб-сайт этого драйвера. Скорее
всего, вы обнаружите, что автор распространяет и двоичные версии.
Если вы не сможете найти двоичную версию или если вы все равно хотите
создать драйвер из исходного кода, то вам для его создания понадобится среда
разработки, установленная на вашей машине. При работе под Windows это означает,
что у вас должна быть копия Visual С++. При работе под Linux вам понадобится
gcc и сопутствующие ему компоненты (которые, скорее всего, уже будут
установлены).
При работе под OS X вам понадобится установить инструментарий разработчика
(который поставляется вместе с операционной системой, но по умолчанию
не устанавливается). Вам также понадобится установить драйвер вашей базы
данных в подходящую версию Ruby. В соответствии с инструкциями по установке,
размещенными ранее в разделе 3.3, «Установка на Mac OS X», мы устанавливали
свою собственную копию Ruby в обход встроенной. Важно не забыть поставить
эту версию Ruby первой в вашем пути доступа, когда вы создаете и устанавливаете
драйвер базы данных. Я всегда использую команду which ruby, чтобы
убедиться, что не запускаю Ruby из каталога /usr/bin.
В следующем списке перечислены все доступные адаптеры баз данных и даны
ссылки на веб-страницы, где они могут быть найдены.
• DB2: http://raa.ruby-lang.org/project/ruby-db2.
• Firebird: http://rubyforge.org/projects/fireruby/.
• MySQL: http://wvvw.tmtrn.org/en/mysql/ruby.
• Oracle: http://rubyforge.org/projects/ruby-oci8.
• Postgres: http://ruby.scripting.ca/postgres/.
• SQL Server (см. инструкции в конце этого подраздела).
• SQLite: http://rubyforge.org/projects/sqlite-ruby.
В списке указана фирменная Ruby-версия адаптера Postgres. Версию postgres-pr
можно загрузить с веб-страницы Ruby-DBI, размещенной по адресу: http://rubyforge.
org/projects/ruby-dbi.
MySQL и SQLite также можно загрузить в виде RubyGems (соответственно,
mysql и sqlite).
Сопряжение с SQL Server потребует некоторых усилий. Следующие инструкции
основаны на заметках, написанных Джоем Гибсоном (Joey Gibson), создавшим
Rails-адаптер.
Предположим, что вы загрузили Ruby на вашу систему, используя комплексное
решение, тогда большинство библиотек, необходимых для подключения SQL
Server, у вас уже есть. Тем не менее у вас не будет установлен ADO-модуль. Выполните
следующие инструкции (любезно предоставленные Дэниэлом Бергером
(Daniel Berger)):
1. Зайдите на веб-сайт http://rubyforge.org/projects/ruby-dbi и возьмите там самую
последнюю установку Ruby-DBI.
2. Откройте окно командной строки и перейдите в каталог, в который вы распаковали
библиотеку rubydbi. Введите следующие команды:
с:\ruby-dbi> ruby setup.rb config --with=dbd_ado
с:\ruby-dbi> ruby setup.rb setup
с:\ruby-dbi> ruby setup.rb i n s t a l l
Адаптер SQL Server будет работать только на Windows-системе, поскольку он
основан на Win320LE.