место в рейтинге
  • 8008
  • 259
  • 8
Нравится блог?
Подписывайтесь!

Как подружить RubyOnRails с PostgreSQL

PostgreSQL - это открытая реляционная СУБД. По функциональности несколько превосходит MySQL, вопрос же производительности остается открытым.  Я просто сменил настройки в ActiveRecord, поэтому какой-то разницы в скорости вообще не заметил.

Я использую на своих серверах Ubuntu Server 12.04LTS, поэтому корректность шагов гарантирую только в рамках Ubuntu.

 

Установка PostgreSQL

"Свежак" всегда на launchpad, поэтому подключим ppa уважаемого товарища Martin Pitt:

  1. sudo apt-add-repository ppa:pitti/postgresql
  2. sudo apt-get update
  3. sudo apt-get install postgresql-9.2

К базам данных проекты будут обращаться удаленно, поэтому нужно разрешить такую возможность в конфигах:

/etc/postgresql/9.2/main/postgresql.conf
  1. #------------------------------------------------------------------------------
  2. # CONNECTIONS AND AUTHENTICATION
  3. #------------------------------------------------------------------------------
  4. # - Connection Settings -
  5. listen_addresses = '*' # what IP address(es) to listen on;
  6. # comma-separated list of addresses;
  7. # defaults to 'localhost'; use '*' for all

Как становится понятно из комментария в конфиге, нужно поставить '*' в параметр listen_addresses, чтобы сервис одновременно мог слушать внутренние и внешние подключения.

Разбираем аутентификацию. В приведенном ниже конфиге расписан простейший вариант организации аутентификации.

Как видно, строка состоит из 4-5 параметров.

TYPE - обозначает тип соединения. Варианты: local (через unix-socket), host (TCP/IP), hostssl (TCP/IP через зашифрованное соединение)

DATABASE - очевидно, имя БД.

USER - так же понятно из названия, имя пользователя.

ADDRESS - приводится только в случае TCP/IP соединения, позволяет создавать гибкие фильтры для доступа к различным БД.

METHOD - метод аутентификации. Основые: trust (свободный вход), password (пароль пользователя в открытом виде), md5 (зашифрованный пароль).

/etc/postgresql/9.2/main/pg_hba.conf
  1. # TYPE DATABASE USER ADDRESS METHOD
  2. local all all md5
  3. host all all 0.0.0.0/0 md5

Перезагрузим сервис, чтобы изменения в конфигах вступили в силу:

  1. sudo service postgresql restart

Можно приступить к созданию тестовой базы.

Входим в шелл через стандартную привелегированную учетную запись:

  1. sudo -u postgres psql

Создаем тестовую базу, пользователя и наделяем его всеми привилегиями на эту базу, затем выходим из шелла:

  1. postgres=# CREATE DATABASE test_db;
  2. CREATE DATABASE
  3. postgres=# CREATE USER test_user WITH password 'imapassword';
  4. CREATE ROLE
  5. postgres=# GRANT ALL privileges ON DATABASE test_db TO test_user;
  6. GRANT
  7. postgres=# \q

Пора попробовать залогиниться под новой учеткой с локального шелла:

  1. psql -h localhost test_db test_user

Успешно? Делаем \q.

И пробуем зайти с удаленного сервера:

  1. psql -h server_ip -U test_user -d test_db

Отлично!

Пора заканчивать с админством, и переходить к конфигурированию Rails приложения.

 

Настройка Rails для работы с PostgreSQL


Для начала нужно установить один пакет на девелоперскую машину, иначе гем не установится:

  1. sudo apt-get install libpq-dev

Затем можно добавить гем в Gemfile и установить его:

  1. gem 'pg'
  2. bundle install

И добавить соответствующие записи в database.yml:

config/database.yml
  1. development:
  2. adapter: postgresql
  3. encoding: unicode
  4. database: test_db
  5. pool: 5
  6. username: test_user
  7. password: imapassword
  8. host: server_ip
  9. ...

Готово!

Куат rubyninja
3 марта 2014, 15:23
2870

Загрузка...
Loading...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

«Алматы – город, летящий под откос», или Кто заказал утку у российского блогера

«Алматы – город, летящий под откос», или Кто заказал утку у российского блогера

Некий блогер Сергей Никитский неустанно пишет о Казахстане, Астане, Экспо и посвящает два материала Алматы, причём подчёркнуто называет город Алма-Ата.
Langdon
19 июля 2017 / 15:44
  • 3584
  • 57
«Язык мой – враг мой», или 7 причин никогда не разговаривать с полицией

«Язык мой – враг мой», или 7 причин никогда не разговаривать с полицией

На этот раз пост очень важный и необходим к прочтению каждым! Не поленитесь и уделите время прочтению. Ни в коем случае, не разговаривайте с полицейскими до прихода вашего адвоката!
asselsabekova
18 июля 2017 / 14:19
  • 3324
  • 32
Один из способов выиграть суд против коллекторов

Один из способов выиграть суд против коллекторов

Сегодня в своем посте я постараюсь рассказать, как выиграть суд против некоторых коллекторских компании в нашей стране. Чем отличается коллекторское агенство от обычного банка?
Advokot
18 июля 2017 / 15:31
  • 3036
  • 10
Книга, которая сэкономит вам 150 тысяч долларов и два года жизни

Книга, которая сэкономит вам 150 тысяч долларов и два года жизни

Автор утверждает, что программы МБА не дают никакого позитивного выхлопа, если ты уже не являешься владельцем или наследником прибыльного бизнеса. Знания МБА можно получить бесплатно, уверяет он.
Aks_Ras
19 июля 2017 / 16:28
  • 2679
  • 2
Госорганы, ответственные за жизни детей, хранят молчание. У них в отчетах все хорошо

Госорганы, ответственные за жизни детей, хранят молчание. У них в отчетах все хорошо

Вчера все информационные агентства страны передали сообщение, которое заставило забиться в ужасе сердца всех матерей страны. В мусорном контейнере города Сатпаев было обнаружено тело новорожденной девочки.
AliyaSadyrbaeva
19 июля 2017 / 11:06
  • 2307
  • 18
Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

Что происходит в казахстанской правоохранительной системе под видом борьбы с коррупцией

За день до своей гибели прямо около памятника жертвам политических репрессий 1937-го Жампозов сказал жене, что он – жертва точно таких же репрессий.
openqazaqstan
сегодня / 10:18
  • 1815
  • 7
Почему путь к любимому Иссык-Кулю из года в год не становится легче

Почему путь к любимому Иссык-Кулю из года в год не становится легче

Минувшие выходные для казахстанских туристов, рвущихся от алматинской жары к иссык-кульской прохладе, снова обернулись настоящим кошмаром.
caravan_kz
19 июля 2017 / 18:39
  • 1771
  • 4
Наша новая рубрика «Топ-5»: самые красивые актрисы Казахстана

Наша новая рубрика «Топ-5»: самые красивые актрисы Казахстана

Решили сделать топ-5 красивых актрис Казахстана. Очень долго спорили о первых трех местах и даже чуть не подрались. Было очень тяжело выбирать.
asdbqwe
20 июля 2017 / 14:24
  • 1740
  • 41
Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Легендарный вокалист «Linkin Park» унёс за собой молодость десятков тысяч людей

Самое грустное, что, как и всегда в таких случаях, скоро на Честера начнут изливаться потоки грязи - что он был наркоманом, или что-то подобное (как в случае со многими знаменитостями).
demonica
21 июля 2017 / 15:13
  • 1775
  • 49