- В composer.json в require-dev прописываем:
"artskills/common": "dev-master",
- Не забываем указывать там же:
"minimum-stability": "dev"
- Подключаем репозиторий:
{
"type": "vcs",
"url": "git://github.com/vovantune/common"
}
- Запускаем
php composer.phar install
из папки проекта. - В
bootstrap.php
под строкойrequire CORE_PATH . 'config' . DS . 'bootstrap.php';
дописываем следующую:
require ROOT . DS . 'vendor' . DS . 'artskills' . DS . 'common' . DS . 'src' . DS . 'config' . DS . 'bootstrap.php';
- В
bootstrap.php
правим следующую строку:
Cache::setConfig(\App\Lib\AppCache::getConfig());
- Наследуем
AppController
от ArtSkills\Controller\Controller - Наследуем
ErrorController
от ArtSkills\Controller\ErrorController - Наследуем
AppTable
от ArtSkills\ORM\Table - В
Application.php
заменяемCake\Error\Middleware\ErrorHandlerMiddleware
на ArtSkills\Error\Middleware\ErrorHandlerMiddleware
Копируем файл test-app-conf/app_local.php.dev
в test-app-conf/app_local.php
.
docker-compose up -d
# подключаемся по ssh к проекту
docker-compose exec -u www-data php bash
# запускаем все тесты
composer check
В подпапке dev хранятся данные MySQL, а также конфигурация Docker виртаулок.
- Куча дополнительных инструментов тестирования.
- Построитель классов Table и Entity на основе структуры базы (перенести сюда доки).
- Логирование ошибок в Sentry.
- Полезные фичи ORM (классы Table, Entity, Query).
- Helper для работы со скриптами и стилями).
- Деплойщик проектов
- Роутер для Rest Api запросов на основе OpenApi аннотаций
- Формирование конфига для phinx на основе кейковского конфига подключения
- В контроллере - методы для стандартных json ответов и стандартная обработка ошибок
- Правильная обработка вставки NULL значений в поля типа JSON
- Если нужно выпилить эмодзи при сохранении в базу (16 байтные символы), то подключаем Utf8StringType
- zip/unzip
- Очистка папок по времени создания, отложенное создание папки и ещё пара мелочей
- Незначительные изменения Http/Client
- Из окружения разработчика все емейлы шлются на тестовый ящик; из юнит-тестов - сохраняются с возможностью достать их и проверить; и ещё пара мелочей
- Ограничения для миграций - для полей таблиц обязательно указывать комментарии и значения по-умолчанию (либо явно указывать, что по-умолчанию значений нет)
- Трейты для одиночек и полностью статичных классов-библиотек
- Функции для удобного формирования в запросах вложенных ассоциаций и полных названий полей
- Формирование конфига кеша
- Некоторые удобные функции для работы с массивами и строками
- Удобные чтение и запись в csv
- Немного более удобная работа с Connection
- Определение окружения и автодополнение для чтения из Configure
- Класс для работы с git и чистка устаревших веток
- Однострочный вызов http запросов и получение результата в нужном формате
- Русская граматика: правильное склонение слов с числитильными; даты
- Транслит
- Построитель Url. Основная фишка - использование текущего домена по всему коду (у всех разработчиков и на продакшне текущий домен разный)
- Объект для сообщений между классами да и вообще для любых целей (использование объектов вместо ассоциативных массивов ради автодополнения)
- Функции для удобного запуска команд в шелле (Удобные возвращаемые значения, ошибки по-умолчанию попадают в вывод, возможность запускать в фоновом режиме, запуск из конкретной папки)
- Добавлены шаблоны и параметры хелпера Form
- Запуск функции в несколько потоков MultiThreads
- Описать регламент работы с common (как оформлять доки, как оформлять код)
- Выпилить использование Git как одиночки и без указания папки (сначала в проектах, потом в common)
- В деплое сделать функцию возврата к предыдущей версии
- По большей части всё просто - переключить симлинк на предыдущую папку и очистить кеш
- Но до этого нужно откатить миграции. Сравнить миграции в текущей папке и в предыдущей, и из текущей откатить разницу
- И нужно проверять, что в предыдущей папке сейчас более старая версия. (Если сделано более одного отката, то можно сделать круг.) Проверка по currentVersion
- Об успешном деплое тоже можно сделать оповещение (чтоб не гадать, когда он завершился)
- Можно в деплое добавить проверку, что сейчас ничего не деплоится/откатывается, чтобы нельзя было запустить одновременно