Встраиваемые Пользовательские Движки Блогов Для Ruby On Rails

Иногда мне кажется, что в экосистеме Ruby on Rails есть проклятое место: встроенные движки для ведения блогов.

Это особенно приятно видеть в свете бесконечного количества скринкастов «Блог Rails за 10 минут».

Судя по всему, любая попытка создать какое-либо решение для блоггинга в виде плагина обычно приводит к одному из двух исходов: либо человек устает от этой работы и уходит заниматься более насущными делами, либо движок превращается в монстр, способный сожрать любое приложение A Rails еще до его инициализации.

Некоторое время назад, когда я работал в «АБАК-ПРЕСС», руководство приказало мне добавить LookMart.ru Очень модная нынче функция — пользовательские блоги (данная функциональность сейчас находится в активной разработке).

Меньше всего нам хотелось изобретать велосипед и блокировать очевидные машины от контроллеров с моделями, но после небольшой разведки нам пришлось смириться и сделать всё самим.

Почему? Потому что подходящего решения, к сожалению, мы не нашли.

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

  • необходимо отслеживать все изменения слизняк в сообщениях в блогах и избегайте «битых» ссылок при редактировании метаданных;
  • у нас есть Очень продуманная система категорий, которая должна быть привязана к сообщениям в блоге;
  • ряд доработок в системе маршрутизации несколько усложняют реализацию плагинов со своими маршрутами;
  • реализована столь же сложная система регионов, очень тесно интегрированная с маршрутами и характеристиками постов.

Это маленький мир.

Кому-то наверняка пригодится одно из заметных существующих решений, а эта статья поможет снизить затраты на разведку.



Описание аналогов



Губернатор
Губернатор — это плагин для Ruby on Rails 3.0, который делает практически безболезненным включение функций ведения блога в веб-приложение.

Плагин полностью протестирован с использованием RSpec и имеет минимальные зависимости во время выполнения: только ActiveRecord и will_paginate. Методы аутентификации и авторизации пользователя указываются путем переопределения соответствующих помощников.

Немного обидно, что последний коммит на него был датирован 27 ноября прошлого года, а поддержка Rails 3.1 пока не анонсирована.



Локомотив
В экосистеме Ruby on Rails такие «комбайны», как Локомотив , который можно встроить в веб-приложение совершенно тривиальным способом (например, двигатель ) и используется для создания пользовательских блогов.

Возникает вопрос о целесообразности интеграции подобных решений: эти CMS могут слишком многое.

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

Не каждый человек готов с этим смириться.

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

Не забывайте, что «Локомотив» использует только MongoDB, что может подойти не всем.



Кублог
Существует и более современный аналог двигателя Губернатора – Кублог .

Кублог по своей сути очень похож на Губернатор, но рассчитан на несколько более «современные» инструменты: Ruby on Rails ≥ 3.1 и несущее ПО (аналог скрепки).

Судя по тому, что последний коммит датирован 21 ноября 2011 года, и лишь частичное наличие тестов кода, возникает гипотеза о том, что существует некая зависимость между количеством плагинов блога для Rails и временем года.

Несмотря на низкую интенсивность разработки и практически отсутствие интереса к проекту со стороны сообщества, он используется компанией-разработчиком в производстве и, вероятно, показывает очень хорошие результаты.



ДЖАБЕ
Встроенный движок ДЖАБЕ появился относительно недавно и уже имеет ряд зависимостей, сравнимых с хорошей CMS: Rails ≥ 3.1, ActiveRecord, kaminari, devise, simple_form и так далее.

Тестового покрытия как такового нет, несмотря на весьма впечатляющую версию 0.7.0, до которой движок смог дорасти с декабря прошлого года.



Сводная таблица

Аналоговый Легкость Популярность Ограничения Тестовое покрытие
Губернатор Да 83 наблюдателя, 5 форков, последний коммит 27.11.2011 АктивРекорд хороший
Локомотив Нет 947 наблюдателей, 218 форков, последний коммит 09.02.2012 монгоидный хороший
Кублог Да 3 наблюдателя, 1 форк, последний коммит 21.11.2011 АктивРекорд средний
ДЖАБЕ Да 14 наблюдателей, 3 форка, последний коммит 02.02.2012 АктивРекорд Нет
Таким образом, мне хотелось бы задать риторический вопрос: неужели исходная проблема настолько неактуальна для сообщества Ruby on Rails, что никто публично не пытается ее решить? Смею предположить, что хоть задача и актуальна, но при разработке блог-движка всегда есть уточняющие требования, поэтому создание решения для (пользовательских) блогов на рельсах в общем виде — сизифова задача.

Теги: #ruby onrails #блоги #обзор аналогов #очень плохо видно в темноте #ruby onrails

Вместе с данным постом часто просматривают: