Я постараюсь обновить эту "тему" своими выводами после быстрой попытки плагина Хуана и всех других упомянутых, кроме одного из CakeDC ..., так как у меня не обновлено соответствующее приложение для CakePHP 1.3 и этой миграции плагин требует 1,3
Я должен отметить, что комментарии о сбоях и плагинах, которые не работают для меня, следует читать в первую очередь как «не подходящие для МОИХ нужд» или «ошибки, которые я допустил, пытаясь их использовать». В какой-то степени некоторые могут читать такие комментарии как просьбу о пересмотре документации. Я не имею в виду, что протестированные плагины по своей природе имеют недостатки, глючат или сломаны. Я уверен, что все они работают при правильных обстоятельствах и для правильных рабочих процессов.
Оболочка схемы CakePHP
Имеет простую концепцию, которая мне нравится. Схема связана с кодом, а SCM используется для управления его ревизиями.
Прекрасно работает в точку. Эта точка:
Не подходит для автоматического развертывания. То есть Команда update может только изменять таблицы, но не обрабатывать новые или удаленные таблицы. Они обрабатываются их собственными командами оболочки, что усложняет развертывание в стиле Cap. Также запуск обновлений с новой таблицей приведет к ошибкам, когда скрипт попытается «изменить» несуществующую таблицу. Я уверен, если это намечено или у меня возникла проблема. (Спросили в гугл группе без ответа)
CakeDC миграций
- Звучит так, будто они взяли оболочку схемы и "исправили" ее. Документы объясняют процедуру немного более сложной (чтобы объяснить, по крайней мере), но она может работать так, как я хочу.
ЯМЛ, миграция Джоулмосса и Хуана
Все они разделяют концепцию рельсов версионных файлов и «взлёта» и «сброса» между ними. Мне это нравится меньше, потому что я не вижу ситуации для моих проектов, когда миграция схемы будет обновлена или откатана, не делая то же самое с исходным кодом. Я также могу жить без возможности переноса существующих данных в сценарии миграции, так как я предвижу это как очень редкое явление для меня.
Все это предполагает, что я не буду касаться базы данных другими способами, кроме сценариев миграции. Я не могу открыть свой любимый MySql-GUI и поиграть, пока я не буду счастлив, а затем сгенерировать «diff» с помощью этих сценариев. (По крайней мере, я не нашел документированных способов сделать это во время моих кратких тестов.) Я должен вручную записать изменения в файлы YAML или php. Поскольку я начинаю работу над существующим проектом с 30 таблицами, мне не нравится идея переписывать эту схему вручную. Но некоторые из этих плагинов не создали хорошую отправную точку для всех моих таблиц. Вероятно, это также было связано с моим кратким тестированием и / или невозможностью найти документацию для такой функции. Я не погружался в исходный код для большинства из них.
Мой следующий шаг - обновить мой проект до CakePHP 1.3 и попробовать последний плагин. Но я не знаю, когда у меня будет время для этого. (т.е. никто не задерживает дыхание)
Если вы считаете, что я неправильно понял, как работает любой из этих плагинов, и могу предложить, как заставить их работать на меня. Буду рад ответу на комментарий.