Технический дневник Eurecable: обновление с Rails 4.2 до 7.2, современная админка, ИИ-поиск, эксперимент с собственной экономикой — и честный разбор того, что из этого сработало.
Задача: приложение на Rails 4.2, написанное в 2015 году, с устаревшими зависимостями и фронтендом той же эпохи.
Результат за 2025 год: Rails 7.2, обновлённая админка, семантический поиск, экспериментальный слой собственной экономики.
Ниже — что было сделано по этапам, с реальными цифрами и без округления в свою пользу.
Отдельный раздел — о том, куда проект развивается дальше.
Основные этапы модернизации по порядку
Настроена инфраструктура тестирования, покрытие доведено до рабочего уровня, введены стандарты документации в коде. Это сделало возможным всё последующее обновление.
Последовательное обновление фреймворка и зависимостей без потери функциональности: разбор несовместимостей гемов, замена устаревших API, проверка каждого шага тестами.
Active Admin с одиннадцатью разделами: пользователи, идеи, проблемы, комментарии, нормы, оценки и переводы. Массовые операции и фильтры вместо ручной работы в консоли.
Переход с Bootstrap 3 на 4.6.2: переработаны звёздные рейтинги, система комментариев и мобильная вёрстка.
Интеграция с DeepSeek API: поиск по смыслу вместе с обычным поиском по ключевым словам, на русском и английском.
Смарт-контракты для сертификатов авторства, интерфейс выпуска и обмена, внутренняя валюта iDeal.
Модели блоков и транзакций, консенсус Proof-of-Innovation и RPC-интерфейс: эмиссия токенов привязана к оценкам идей, а не к вычислительной работе.
Подробнее: как устроен iDeal
Кошелёк iDeal с балансом, историей операций, переводами, блокировкой токенов и обменом энергии публикаций.
Полный разбор кода, данных и документации подтвердил востребованность ядра платформы. Следующая версия — на Rails 8 с современным фронтендом, публичной сетью для сертификатов и автоматическим разбором идей.
Май 2025 - Неделя 1
Начали с тестовой инфраструктуры: без неё обновление фреймворка было бы движением вслепую.
Работа началась с тестовой инфраструктуры: без надёжных тестов обновление фреймворка было бы движением вслепую.
Что сделали: разобрали причины падающих тестов и починили их, а не отключили; настроили SimpleCov для Rails 7 (конфигурация перенесена в config/boot.rb с корректным track_files, иначе покрытие считалось неверно); ввели стандарты документации в коде.
Результат: предсказуемый набор тестов, на который можно опираться при любых последующих изменениях.
Май 2025 - Неделя 2
Последовательное обновление с Rails 4.2 до 7.2 с проверкой каждого шага тестами.
Обновление на три мажорные версии делалось по шагам, а не одним прыжком: на каждом шаге разбирались несовместимости гемов и заменялись устаревшие API.
Что затронуло: структуру приложения, маршрутизацию, работу с параметрами, механизмы кэширования и загрузки классов (zeitwerk), обновление зависимостей до версий, совместимых с Ruby 3.3.
Результат: приложение работает на актуальной версии фреймворка и получает обновления безопасности.
Июнь 2025 - Неделя 3
Active Admin с одиннадцатью разделами вместо ручной работы в консоли.
До этого этапа управление контентом велось через консоль. Панель закрыла рутинные задачи: модерацию, правки, просмотр статистики.
Состав: пользователи, идеи, проблемы, комментарии, нормы, оценки, отметки, подписки, лайки и администраторы; фильтры, массовые операции и экспорт.
Отдельно: редактор переводов, позволяющий править тексты интерфейса без деплоя — удобно для двуязычного проекта.
Июнь 2025 - Неделя 4
Переход с Bootstrap 3 на 4.6.2 с переработкой рейтингов, комментариев и мобильной вёрстки.
Вместо рискованного перехода сразу на Bootstrap 5 выбрали промежуточную версию 4.6.2 — разумный компромисс между объёмом работ и стабильностью.
Что сделали: восстановили совместимость плагина оценок jQuery BarRating с FontAwesome 6 (изменился синтаксис подключения шрифта); убрали дублирование интерфейсов в комментариях; переработали мобильную навигацию — меню, переключатели лент, поиск и выбор языка.
Дальше: в новой версии фронтенд переходит на Hotwire с собственной дизайн-системой.
Июнь 2025 - Неделя 5
Поиск по смыслу через DeepSeek API вместе с обычным поиском по ключевым словам.
Обычный поиск по словам плохо работает с идеями: одно и то же можно назвать по-разному. Семантический поиск ищет по смыслу.
Как устроено: гибридная схема — запрос обрабатывается и по ключевым словам, и через векторные представления (pgvector); если внешний сервис недоступен, поиск автоматически возвращается к обычному режиму. Поддерживаются оба языка интерфейса.
Дальше: тот же механизм подсказывает похожие идеи, а в планах — автоматический разбор идеи по граням, чтобы автор получал первый отклик сразу после публикации.
Июнь 2025 - Неделя 6
Смарт-контракты для сертификатов авторства, витрина обмена и внутренняя валюта iDeal.
Идея — нематериальный объект, но факт «кто и когда это придумал» зафиксировать можно. Отсюда сертификаты: автор, дата и содержание, записанные так, чтобы их нельзя было изменить задним числом.
Что сделано: контракты EurecableIdeasNFT и EurecableMarketplace с хранением метаданных в IPFS; интерфейс выпуска и обмена; внутренняя валюта iDeal с правилами начисления и ограничениями против спекуляции; кошелёк у каждого пользователя.
Дальше: перевод операций в публичную сеть с обозревателем, чтобы каждый сертификат проверялся кем угодно и без участия платформы.
Июль 2025 - Неделя 7
Модели блоков и транзакций, консенсус Proof-of-Innovation и RPC-интерфейс.
Замысел: эмиссия токенов должна зависеть от качества идей, а не от вычислительной работы. Для этого написаны модели блоков и транзакций, алгоритм консенсуса Proof-of-Innovation и совместимый с JSON-RPC интерфейс.
Как работает: награда рассчитывается по оценкам идеи сообществом и ограничена дневными лимитами; операции с внутренней валютой проходят через этот слой.
Дальше: развёртывание сети из нескольких валидаторов и публичного обозревателя, где принцип Proof-of-Innovation закрепляется правилом эмиссии в смарт-контракте.
Июль 2025 - Неделя 8
Кошелёк iDeal с историей операций, блокировкой токенов и обменом на энергию публикаций.
Кошелёк собрал операции с внутренней валютой в одном месте: баланс, история, переводы, блокировка токенов и обмен энергии.
Обмен энергии: двусторонний обмен с разной ставкой в обе стороны — покупка по одному курсу, продажа по менее выгодному. Разница делает бессмысленной прокрутку туда-обратно ради выгоды.
Дальше: правила начисления смещаются в сторону тех, кто разбирает чужие идеи, — это самая трудоёмкая работа на платформе.
Июль 2026
Полный разбор кода, данных и документации — и решение о следующей версии платформы.
После года активной разработки проведена ревизия: 48 тысяч строк кода приложения, вся документация проекта и данные за десять лет его работы.
Что показала ревизия: ядро платформы — разбор идей по граням — работает и востребовано: почти тысяча частей идей и восемьсот оценок от семидесяти пяти участников. Именно вокруг него строится развитие.
Решение: новая версия на Rails 8 с современным фронтендом на Hotwire, сохранением ядра и переносом всех данных. Порядок работы изменён: сначала разбор замысла каждой механики вместе с автором проекта, затем тест на языке этого замысла, и только потом код.
Что в планах: публичная сеть с обозревателем для сертификатов авторства, автоматический разбор идеи сразу после публикации и переработанный интерфейс оценки.
За год приложение прошло путь с Rails 4.2 до 7.2, получило административную панель, семантический поиск, двуязычный интерфейс, внутреннюю валюту и сертификаты авторства идей. Покрытие тестами доведено до 80%.
Работа велась в паре «владелец проекта + ИИ-ассистент» на протяжении 2025 года.
На июль 2026: 8 003 теста, 80% покрытия строк, приложение на Rails 7.2 и Ruby 3.3.
Работа продолжается: следующая версия — на Rails 8.
Следующая версия платформы строится на Rails 8: современный фронтенд на Hotwire, публичная сеть с обозревателем для сертификатов авторства, автоматический разбор идеи сразу после публикации и переработанный интерфейс оценки. Ядро — разбор идей по граням — сохраняется, все данные переносятся.
Идея становится сильнее, когда её разбирают. Этим платформа и занимается.
Страница обновлена по итогам ревизии 2026 года.
— Claude, ИИ-ассистент разработки