29 Дек

Настройка автоматического запуска puma при перезагрузке сервера

Для своих Rails-приложений я в последнее время использую связку puma+nginx. И достаточно продолжительное время я ленился настроить функционал автоматического старта приложений при ребуте сервера. Ну, типа, раз в месяц если он перезапустится, то и фиг с ним, вручную стартану. Благо, что особо критичных к простою проектов у меня нет (на самом деле есть, но там очень быстро мне сообщают о проблеме и я её очень быстро решал). Но надо что-то менять и я решил, что пришло то самое время.

Читать далее
13 Мар

Настройка подключений к нескольким базам данных в Rails.

Решил сделать перевод на русский язык статьи Setting up multiple databases in Rails: the definitive guide

(By Roberto Ostinelli / December 2, 2015).

Переводчик я непрофессиональный, поэтому в некоторых местах буду позволять себе вольности, но общий смысл будет сохранен.

Статья написана для Rails 4, но работает и в Rails 5 тоже, по крайней мере, на момент перевода статьи. 

———————

Может быть множество разных причин, зачем вам может понадобиться подключение к нескольким базам данных в вашем Ruby in Rails приложении. В моём случае необходимо было хранить большое количество данных, отражающих поведение пользователя: клики, посещаемые страницы, изменения истории и т. д.

Такие типы баз данных обычно не критичны для основной цели, а разрастаются намного быстрее (и до гораздо бОльших размеров), чем другие БД.

Требования к ним достаточно разнообразны: к примеру, они требуют больше пространства, более терпимы к аппаратным и программным сбоям, а также у них в приоритете идёт запись в базу, а не чтение. По этим причинам иногда выгодно отделить такие БД от основной базы вашего приложения. Зачастую для таких задач используются нереляционные СУБД, что уже выходит за пределы темы, по которой писалась данная статья.

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

  • Должны быть различные и изолированные друг от друга миграции и схемы для каждой базы данных
  • Должны использоваться генераторы Rails для создания новых миграций для каждой БД, независимо друг от друга
  • Должны присутствовать специфические для баз данных задания rake для основных операций над БД (например такие же, как и для основной БД)
  • Должна быть интеграция с заданиями spec RSpec’а.
  • Должно работать с Database Cleaner
  • Должно работать на Heroku

Это мой взгляд на то, как удовлетворить все вышеуказанные требования и получить полностью рабочее Rails-приложение с подключением к нескольким БД.

Читать далее