Вытащить подростков из онлайна в реальный мир: миссия выполнима?

В начале 2018 года мы выпустили в открытый доступ проект Kvakka.com – социальную сеть, маркетинговую площадку и дейтинг для фанатов настольных игр. Позади три года разработки, за которые сервис вырос из пет-проекта в коммерческий сервис, пережив две смены фронтенда. Перед нами стояла великая миссия – вытащить детей и подростков из дома, из онлайн-игр, в реальный мир, где они смогут встречаться лицом к лицу с себе подобными. И находить друзей, подруг, партнёров по играм и не только. Continue reading “Вытащить подростков из онлайна в реальный мир: миссия выполнима?”

Ограничиваем доступ к S3 средствами Rails-приложения

Добавить хранение файлов в облаке Amazon S3 в приложение на Rails очень просто: устанавливаем гемы paperclip и aws-sdk, и готово. Но что если мы хотим скрыть прямые ссылки на хранилище S3, и даже разграничивать доступ к конкретным файлам в зависимости от роли пользователя? Вот рабочий пример: Continue reading “Ограничиваем доступ к S3 средствами Rails-приложения”

Строим full-stack environment для приватных проектов на основе бесплатных инструментов

Disclaimer: автор не призывает экономить “на спичках”. Вряд ли стоит работать с заказчиком, с которым вы не можете себе позволить $5 на виртуалку в DO и $10 на Jira. Однако всегда есть сайд-проекты, личные эксперименты, случайные разработки на голом энтузиазме – на которые никаких денег не напасёшься, если покупать под каждую отдельный набор. Поэтому мне было интересно собрать full stack (полный комплекс) инструментов, позволяющих построить процесс от разработки до непрерывной интеграции, деплоя и мониторинга – в приватном (закрытом) проекте – исключительно на freeware или бесплатных тарифах публичых сервисов. Continue reading “Строим full-stack environment для приватных проектов на основе бесплатных инструментов”

No more has_one, please

Есть два из трёх популярных видов ассоциаций: has_one и has_many. Все знаю как они устроены: в первом случае идентификатор связанной сущности является атрибутом модели (а следовательно – столбцом в БД). Во втором случае, создаётся транзитивная таблица связи со столбцами entityA_id и entityB_id.

Казалось бы, решения абсолютно равноправны, выбирай подходящее под задачу. Однако здесь есть важная проблема. Continue reading “No more has_one, please”