Кто-то уже перешел на Drupal console , а я по-старинке использую Drush и Drush-алиасы , которые очень полезны при работе с несколькими окружениями.
Описание drush-алиасов, достойно отдельной темы, но если коротко, то основная функция алиасов - проксирование команд.
Проще говоря, если у Вас есть сайт "рога-копыта.рф" (например, алиас: rk) с четырьмя окружениями local, dev, test и prod, то вы можете создать алиасы, чтобы очистка кэша на всех окружениях не была болью, а выполнялась в четыре команды:
drush @rk.local cc all
drush @rk.dev cc all
drush @rk.test cc all
drush @rk.prod cc all
Об агрегации
Агрегация или объединение алиасов позволяет проксировать комманды сразу на несколько окружений. Предыдущий пример можно объединить в дополнительный алиас all и выполнять команды, используя его.
drush @rk.all cc all -y
Флаг -y, говорит о том, что Вы заранее отвечаете "Да" на все будущие вопросы в течении выполнения команды.
Будьте внимательны! Рекомендую использовать алиас агрегации только при запуске безопасных команд.
Так будет получен следующий вывод:
$ drush @rk.all cc all -y
You are about to execute 'cc all' non-interactively (--yes forced) on all of the following targets:
@rk.local
@rk.dev
@rk.test
@rk.prod
Continue? (y/n): y
rk.local >> 'all' cache was cleared in rk.local [success]
rk.dev >> 'all' cache was cleared in rk.dev [success]
rk.test >> 'all' cache was cleared in rk.test [success]
rk.prod >> 'all' cache was cleared in rk.prod [success]
Здóрово правда?
Пример файла агрегации:
<?php
// Алиасы для окружений.
// ...
// Агрегация алиасов.
$aliases['all'] = array(
'site-list' => array('@rk.local', '@rk.dev', '@rk.test', '@rk.prod')
);
Все это кладём в папку ~/.drush (или C:\Users\<имя пользователя>\.drush для Windows) с именем rk.aliases.drushrc.php и можно пользоваться.
Бонус
Второй вариант использования агрегационных алиасов - проксирование команд на разные сайты одного окружения.
Предположим, у вас есть некоторое количество сайтов на поддержке с local, dev, test и prod окружениями. Конечно, их необходимо периодически обновлять. Так, если у Вас будет 4 сайта, то всего придётся выполнить обновление 16 раз. Не очень приятная процедура, даже с использование drush.
Здесь, затея с объединением алиасов по сайтам имеет мало смысла, т.к. обновлять local, dev, test и тем более prod окружения опасно. В данном случае, необходимо выполнить объединение алиасов сайтов по окружениям. Например, так:
@my-sites.local
@my-sites.dev
@my-sites.test
@my-sites.prod
Тогда обновление выглядит много проще:
drush @my-sites.local upc -y # обновляем код
# Проверяем, что код обновился корректно
drush @my-sites.local updb -y # накатываем обновления на базу
# Проверяем, что базы обновлены корректно
drush @my-sites.local cron -y # запускаем крон