Сегодня-завтра планировал дописать 2-ю статью про интеграцию с приложением, правда там пример пока-что делал с обновлением из админки.
В принципе, могу накидать примерчик и с обновлением через CLI, если это интересно.
Бложик на рельсах я напишу немногим медленнее бложика на симфони, а вот с его деплоем и администрированием в продакшене проблем будет больше. Можно, конечно, добавить, что надо еще баш выучить, научиться пакеты собирать и т. п., но мне это мало интересно. Прототип на рельсах, потом релиз на пхп :)
Я имею в виду, что настроить и администрировать сервер под рельсы сложнее, чем для пхп. Особенно, если хочется, чтобы не нарушалась идеология привычного дистрибутива, чтобы, например, gem'ы управлялись штатным менеджером, а не рубивским. Для пхп тоже заморочек хватает, чтобы пакеты из PEAR или PECL в, например, deb перевести, но и требуется это реже и как-то субъективно проще.
Реально, прототипировать на рельсах проще: и локально разрабатывать, и показать кому-нибудь, выгрузив на хероку, да и гемов много для типовых вещей. А когда общая концепция приложения сложилась, основные детали утверждены, то на пхп лично мне писать и поддерживать проще, да и выгоднее, чем разбираться как гемы кастомизировать. Никто не хочет, почему-то, чтоб я просто развил прототип за те же деньги, узнав сколько стоит хостинг на том же хероку или услуги админа для поддержки рельс, или другого разработчика для развития приложения. Хотят чтоб я вдску сам админил, а я такие риски брать на себя не хочу (хотя беру часто) даже с пхп, не говоря про рельсы — тут точно не возьму, некомпетентен.
А чем можно сделать diff изменений БД? Например, у меня есть база в продакшене (old), к которой можно подключиться по сети и на локалхосте, где я разрабатываю (new). Можно ли сделать автоматическую генерацию up() и down()? Должны же быть алгоритмы.
Вопрос не применительно к CI, хотелось бы услышать ответ от людей, кто активно юзает миграции в своих проектах. Потому что гугление показывает, что такого инструмента, похоже, не существует.
да, mysqldiff.org я нагуглил первым делом, но на первый взгляд для нормальной работы там было применять не просто напильник, а бензопилу.
Посмотрю остальные ссылки, спасибо.
да. и потом еще можно файл миграции поправить ручками, если что не так (там, ренейм поля в таблице вместо добавления/удаления или сразу первоначальный попьюлейшн данных).
Как видите, функции являются лишь обертками для protected метода для получения версии базы данных и опять же protected свойства $_migration_version, и вполне наглядно демонстрируют применение инкапсуляции.
Паблик Морозов: Класс-потомок, созданный в соответствии с этим антипаттерном, выдает по запросу все данные класса-предка, независимо от степени их сокрытия. Название данного анти-паттерна — это каламбур, основанный на созвучии ключевого слова public (паблик), часто означающего открытый доступ к методам и полям класса в объектно-ориентированных языках программирования, и имени пионера-героя Павлика Морозова, известного тем, что он выдал своего отца-кулака.
Миграции баз данных — обзор библиотеки и ее использование