Настройка взаимодействия Ruby on Rails и PostgreSQL

PostgreSQL (или Postgres) – это система управления базами данных (или СУБД) с открытым исходным кодом.

Ruby on Rails – это открытый веб-фреймворк, написанный в Ruby. Rails не зависит от баз данных, то есть, может быть использован с абсолютно любой БД. По умолчанию он предполагает использование MySQL; в данном руководстве показано, как вместо стандартной БД MySQL использовать Postgres. Кроме того, в этой статье показано, как создать приложение Rails на основе БД Postgres.

Примечание: данное руководство можно выполнять как на VPS, так и на локальной машине.

Установка зависимостей

Установка Rails через RVM

Самый простой способ установки Rails – использование менеджера версий RVM (который также позволяет быстро установить Ruby). Для установки RVM требуется инструмент curl.

Примечание: если менеджер RVM уже установлен, переходите к следующему разделу.

RVM позволяет автоматически установить Ruby и Rails как часть его собственной установки. Для этого запустите:

\curl -L https://get.rvm.io | bash -s stable --rails

Примечание: не забудьте просмотреть установочный скрипт RVM, прежде чем запустить его (как и любой другой другой удаленный скрипт, передаваемый в bash).

Затем RVM самостоятельно установится в систему. теперь можно использовать этот менеджер для управления версиями Ruby. Он очень полезен, поскольку позволяет устанавливать несколько версий Ruby, что может быть необходимо для поддержки различных проектов. Кроме того, RVM уже установил Rails gem.

Установка Rails при помощи RubyGems

Если RVM был установлен ранее, не стоит переустанавливать его. Просто установите Rails (он устанавливается в качестве gem-а Ruby):

gem install rails

Примечание: этот синтаксис можно использовать для установки любого другого gem-а Ruby, просто заменив название пакета.

Установка Postgres

Метод установки Postgres зависит от операционной системы. Полный список рекомендаций можно найти по этой ссылке. В общем, проще всего использовать для этого стандартный менеджер пакетов системы (apt-get в Ubuntu, Homebrew в OS X, etc.).

Устанавливая Postgres на локальную машину, можно также установить графический интерфейс (хотя данное руководство подразумевает использование командной строки). Конечно, pgAdmin – не самый продуктивный инструмент, но он может оказаться полезным на локальной машине.

После установки СУБД Postgres нужно установить pg gem, позволяющий соединить Postgres и Ruby. Это делается так:

gem install pg

Настройка Postgres

Теперь создайте пользователя Postgres для приложения Rails, которое будет создано далее. Для этого откройте стандартного пользователя Postgres:

su - postgres

и создайте нового пользователя (или т.н. «роль», согласно терминологии Postgres):

create role myapp with createdb login password 'password1'

Разработка приложения Rails

Чтобы создать приложение Rails для Postgres, запустите команду:

rails new myapp --database=postgresql

Эта команда создаст каталог по имени myapp, который содержит приложение по имени myapp (это имя используется в руководстве для простоты примера; конечно, назвать приложение можно любым удобным именем).

Примечание: Rails подразумевает использование одного имени для пользователя БД и приложения, но это условие необязательно выполнять.

Теперь нужно настроить взаимодействие Rails с базой данных. Это делается при помощи файла database.yml, который находится в:

RAILS_ROOT/config/database.yml

Примечание: как видно из названия, RAILS_ROOT – это root-каталог Rails. Он находится в каталоге приложения (согласно данному руководству, это каталог /myapp).

Файл database.yml используется Rails для подключения к соответствующей БД для текущего окружения Rails. Этот файл разработан согласно стандарту сериализации данных YAML. Файл содержит несколько БД для разных окружений: для разработки, тестирования и производства. По умолчанию Rails предполагает использование отдельной БД для каждого этапа. Это удобно, поскольку БД для определенного этапа ведет себя соответствующим образом (например, БД для тестирования перестраивается для каждого тестирования Rails). Каждая БД по умолчанию должна использовать имя и пароль пользователя Postgres.

Готовый файл database.yml должен выглядеть примерно так:

development:
adapter: postgresql
encoding: unicode
database: myapp_development
pool: 5
username: myapp
password: password1
test:
adapter: postgresql
encoding: unicode
database: myapp_test
pool: 5
username: myapp
password: password1

Затем нужно запустить:

rake db:setup

Это создаст базы данных для разработки и тестирования, передаст права на них указанному в файле пользователю Postgres, а также создаст таблицы schema_migrations дл каждой БД (эти таблицы используются для записи миграций).

Запуск приложения Rails

Теперь можно запустить приложение Rails:

rails server

Перейдите на localhost:3000, и на экране появится посадочная страница Rails.

Для взаимодействия с БД нужно создать scaffold:

rails g scaffold Post title:string body:text
rake db:migrate

Теперь перейдите на localhost:3000/posts. На этой странице можно создавать, редактировать и удалять посты.

Готово! Теперь приложение Rails может взаимодействовать с базой данных Postgres.

Примечание: больше информации можно найти в руководстве по началу работы с Rails.

Tags: , , , , , , , , , ,

Добавить комментарий