Автоматический deploy Symfony 2 используя Capifony

При разработке, и тем более поддержке действующего проекта на Symfony 2 одной из задач, которые приходится постоянно делать, это выгрузка изменений на сервер: рабочей или тестовой. Но так как программисты народ достаточно ленивый, чтобы автоматизировать повторяющиеся монотонные задачи, есть достаточное количество инструментов для облегчения данного процесса. Для Symfony2 мы используем Сapifony. Он основан на Capistrano но оптимизирован для Symfony.

Yosemite настройка рабочего окружения.

После обновления OSx Yosemite, необходимо настроить рабочую систему. Мы установим и настроим пакеты php-fpm, nginx, mongo, nodejs. Для начала установим Xcode из App Store обновим консольные команды $ xcode-select --install и уберем apache из автозагрузки $ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist . Так как у Apple не появилось своего менеджера пакетов будем использовать проверенный brew.

SSH Авторизация по ключу

Очень часто для работы необходима ssh авторизация без пароля, к примеру, когда используете capifony для развертывания проекта на рабочем сервере.

Корпоративный сайт на Symfony2

Необходимо создать простой одностраничный корпоративный сайт, например 4devs.org. Для этого будет использоваться проект "fdevs/company-site" основаный на Symfony2. В проекте уже установлены базовые библиотеки, необходимые для корпоративного сайта.

Локализация даты в Symfony2

Необходимо локализировать дату, к примеру "2 ноября 2014", в проекте. Стандартный фильтр Twig date не дает такой возможности.   Есть TwigExtension позволяющий локализировать дату в зависимости от вашей локали. Добавим и установим пакет с помощью composer.json(в стандартном пакете Symfony2 он уже установлен), "twig/extensions": "~1.1" а в Symfony 2 подключим расширение, в файл config.yml добавим сервис: services: twig.extension.intl: class: Twig_Extensions_Extension_Intl tags: - { name: twig.extension } В наших шаблонах можем использовать localizeddate. Например: {{ post.published_at|localizeddate('medium', 'none', locale) }} Данный вариант очень прост в подключении и использовании.

Использование CRUD-генератора в Symfony2

Symfony вместе с DoctrineORM позволяет использовать CRUD генератор в своих приложениях. Рассмотрим использование CRUD(Create\Read\Update\Delete) на практике. У нас уже установлена Symfony 2.5, при этом используется структура директорий версии 3.0, также создана база в Mysql. Создадим небольшое веб приложение для добавления книг и других данных в таблицу. Итогом у нас будет возможность добавления/удаления/редактирования книги, автора, издательства в базу данных.

MAMP для OSx

Рассмотрим подробности установки инструментов разработчика на OSx. Итогом будет рабочий проект. То есть должны работать все зависимости для Symfony. Мы также установим и настроим MongoBD. MAMP расшифровывается как Mac Apache MySQL PHP. В нашем случае это Mac Apache Mongo PHP.

Travis начало

это сервис для автоматического тестирования кода, он интегрирован с GitHub поддерживает множество языков и библиотек, в данном случае нас интересует PHP и тесты на PHPUnit. Это очень удобно когда вы разрабатываете открытую библиотеку, остальным нет необходимости запускать тесты локально, все будет доступно на travis. Мы рассмотрим, как добавить приложение на travis-ci.org на примере 4devs/blog.