место в рейтинге
  • 7262
  • 258
  • 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
2535

Loading...

Комментарии

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

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

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

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

Исламская ипотека в Казахстане: в этом году выйдет на розничный рынок

Исламская ипотека в Казахстане: в этом году выйдет на розничный рынок

Многие клиенты, вздыхая о харамном ссудном проценте местных банков, сокрушались по поводу отсутствия у нас халяльного кредитования. Поддержка исламского банкинга на уровне МФЦА есть...
DanaJarlygapova
24 марта 2017 / 18:28
  • 21925
  • 64
Рианна за $2 млн. Очередные понты от «ЭКСПО-2017»

Рианна за $2 млн. Очередные понты от «ЭКСПО-2017»

Концерт Рианны всё-таки состоится летом в рамках культурно-зрелищных и спортивных мероприятий ЭКСПО-2017. Рианна крута, с этим никто не спорит. Но соберёт ли «Астана Арена» 30 тысяч зрителей при...
openqazaqstan
29 марта 2017 / 14:29
  • 18824
  • 15
КТЖ подарило iPhone мошеннику за краденную фотографию

КТЖ подарило iPhone мошеннику за краденную фотографию

Украл в супермаркете — отправился в полицию. Украл фотографию — выиграл новенький iPhone 7 от КТЖ. Вот такая нехитрая получается история. Огромное спасибо Тамерлану Жумабекову, который обратил моё...
andche
вчера / 0:06
  • 12299
  • 22
Компания LG Electronics открыла предзаказ на новый флагман LG G6

Компания LG Electronics открыла предзаказ на новый флагман LG G6

LG Electronics объявляет о начале предварительного заказа онлайн на новый смартфон LG G6. Оформить предзаказ можно на сайтах магазинов электроники до 16 апреля 2017 года.
LG Electronics
24 марта 2017 / 14:20
  • 5273
  • 0
Димаш, Головкин, Есентаева... О героях нашего времени – истинных и «картонных»

Димаш, Головкин, Есентаева... О героях нашего времени – истинных и «картонных»

В прессе, в соцсетях, на ТВ, во всём информационном пространстве Казахстана –заразная эпидемия. Что сказал Головкин, что съела Есентаева, что китайцы подарили Димашу...
openqazaqstan
вчера / 15:54
  • 4115
  • 22
Страну, где так строят дороги, победить невозможно!

Страну, где так строят дороги, победить невозможно!

Шестиминутный ролик про строительство автомобильной дороги в США - это как острый нож в пузо нашим чиновникам. Они же подавятся бешбармаком, увидев его! Похлеще любого пропагандистского фильма...
Timur_Tregulov
24 марта 2017 / 11:26
  • 5141
  • 41
Почему наши парни выглядят как агашки? Хочется им сообщить, что мода на пафос прошла

Почему наши парни выглядят как агашки? Хочется им сообщить, что мода на пафос прошла

Когда уже люди смогут самоутверждаться за счет своего интеллекта, энергии, познаний и настоящей красоты, а не за счет авторитетного вида и не менее авторитетного дяди?
Bookenova_smartass
28 марта 2017 / 18:28
  • 4286
  • 91
Это вам не Дисней. Реальный прототип «Красавицы и Чудовища»

Это вам не Дисней. Реальный прототип «Красавицы и Чудовища»

Многие уверенны на 100%, что сказка «Красавица и Чудовище» - это интересная выдумка ее создателей. Однако, действия, происходящие в мультфильме и фильме, имели место в истории, и у главных героев...
Naomi_K
24 марта 2017 / 18:42
  • 5100
  • 36
Семь причин почему вам надо перестать откладывать переезд за границу

Семь причин почему вам надо перестать откладывать переезд за границу

Вы думаете о переезде за границу, но постоянно откладываете дату, потому что вас беспокоит тысяча мелочей, которые могут пойти не так? У меня есть семь причин, почему пора перестать мотать нервы...
Lesch
24 марта 2017 / 17:50
  • 4078
  • 15