Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (1)
  • Redmine. Стоит ли связываться?

    @Tab10id
    Болшая часть кода redmine сложно назвать чем-то хорошим. Методы на 50+ строк тут считаются нормой. В проекте тонны легаси-кода. Так как история редмайна началась ооочень давно, когда даже rails еще не был мейнстримом, часть решений redmine стали конфликтовать с аналогичными решениями rails, которые появились несколько позже. Все эти проблемы решаются стандартным для руби способом, манкипатчингом. В итоге нет нормальной поддержки i18n, нет sprockets (подключить костылями можно, но даже после того как оно заведется, проблем будет достаточно), фронт из нулевых (и внешне и внутренне), адекватность внутренней логики часто под большим вопросом, особенно что касается старого кода.
    Стабильная версия redmine работает на rails 4.2, но на подходе новая версия с rails 5.2.

    Отдельно по системе плагинов. Если коротко, то она ужасна, хоть и работает. По факту плагин мало чем отличается от гема, все происходит в общем нэймспэйсе, как если бы мы просто добавляли код в основной репозиторий. Система предоставляет возможность иметь в каждом плагине собственные миграции и указывать зависимости от других плагинов. Но и ни тем ни другим лучше не пользоваться, если есть такая возможность. Пройденные миграции сохраняются в базу с именем плагина и плагин после этого не переименовать без плясок с бубном. Если миграции имеются в зависимых плагинах, нужно иметь ввиду, что сначала пройдут миграции одного плагина, а потом другого. Порядок загрузки плагинов - по алфавиту, если плагин зависит от другого, но тот еще не загружен, будет исключение. Есть официальный механизм решения этой проблемы, но уже сто лет как не работает, в итоге опять костыли. Хоть в редмайне и есть тесты нет единого решения для тестов в плагинах, опять костыли. В плагинах почти никто не пишет тестов. При этом постоянный манкипатчинг в плагинах меняет поведение редмайна и ес-но ломают оригинальные тесты. Совместимость между плагинами на том же уровне. Для расширения вьюх есть система хуков, но их маловато, поэтому плагины полностью переопределяют вьюхи и партиалы. Очевидно, что если разные плагины переопределяют одни и те же партиалы, выигрывает последний.

    Но при всем при этом, так как это руби, обходные пути можно найти почти всегда, положительные тенденции в кодовой базе имеются, хотя и на низком уровне. С минимальными костылями можно переиспользовать систему фильтров как в задачах. Хотя с некоторой кривостью данной сиспридется смириться или долго и мучительно слать пулл-реквесты (которые в случае redmine оформляются в виде задач на redmine.org с прикладыванием патчей).

    О себе. 5 лет работаю с redmine, но, так как задачи не связаны напрямую с redmine и rails, особой боли не испытываем. Жить можно.
    Ответ написан
    1 комментарий