Я слышал раньше, что миграции на Rails несовершенны, но до недавнего времени я никогда не сталкивался с подобным примером. Теперь я понимаю, что если миграция зависит от определенного состояния кода , то у вас возникнут проблемы, если вы попытаетесь клонировать репо через два года и выполнить все миграции (как много они будут зависеть от более старых версий кода).
Я думал, что у этого парня была хорошая идея:
http://www.mattdipasquale.com/blog/2011/02/28/rails-model-safe-migrations/
Есть ли что-то вроде этого: гем (скажем) для автоматической проверки коммита, в который была добавлена каждая миграция, вплоть до HEAD?
Очевидно, что это не будет надежной системой, поскольку она полагается на то, что каждая миграция законно возможна с чистого листа в тот момент, когда она была совершена для репо (я могу представить случаи, когда команды писали миграции, которые только случайно работают на основе того, что они сделали с базой данных, полностью вне контроля версий). Но это было бы лучше, чем ничего.