Lab / Drush

Drush быстрый старт и основные команды

Давайте прямо сейчас начнём пользоваться Drush? Нет ну правда! Это очень удобно, это ускоряет рутинные операции. Только представьте - обновить ядро Drupal можно всего одной командой Drush! Я сам до последнего сопротивлялся этой идее. Думал что надо что то устанавливать на сервер, а половина клиентов висит на обычном шаред хостинге итд... Так вот выбрасываем этот хлам из головы, заливаем папку drush в корень вашего Drupal сайта и всё, его уже можно использовать! Далее подключаемся по SSH заходим в папку drush и начинаем выполнять команды.

Основные команды

Основаная информация о сайте и статус drush status Очистить кэш drush cc all Очистить кэш даже если друпал упал drush sql-query "DELETE FROM cache" sql-query выполняет SQL запросы в базе данных, в которой установлен Drupal. Загрузка последней версии модулей (пример 2 модуля за раз) drush dl module1 module2 Загрузить dev версию модуля drush dl views-7.x-3.x --package-handler=git_drupalorg Похоже что добавление --package-handler=git_drupalorg больше не обязательно в последних версиях. Активировать модуль drush en name_of_module -y -y пропускает запрос подтверждения Отключить модуль drush dis name_of_module Отключение модуля если Drupal упал drush sql-query "UPDATE system SET status = '0' WHERE name = 'module_name'" drush sql-query "DELETE FROM cache_bootstrap WHERE cid = 'system_list'" Удаление модуля через Drush drush pm-uninstall module_name -y Посмотреть доступен ли модуль drush pm-list | grep module_name Посмотреть включен ли модуль drush pm-list --status=enabled | grep module_name Показать все включенные модули drush pm-list --type=Module --no-core --status=enabled Обновить модуль drush up module_name Обновить модуль до DEV версии drush up MODULE_NAME-1.x-dev Обновить друпал через Drush drush up drupal Обновить все модули и Друпал drush up Запустить update.php drush updb Отправить e-mail drush php-eval "print mail('pere@example.com', 'Subject', 'Message', 'From: pere@example.com');" Удалить поле drush field-delete fieldname Удалить экземпляр поля drush field-delete fieldname --bundle=article Вручную удалить поле и все его данные (не рекомендую) drush sql-query "DELETE FROM field_config WHERE field_name = 'fieldname'" drush sql-query "DELETE FROM field_config_instance WHERE field_name =' fieldname'" drush sql-query "DROP TABLE field_data_field_fieldname" drush sql-query "DROP TABLE field_revision_field_fieldname" Задать пароль полтзователя drush upwd --password="asdf" admin Блокировать пользователя drush user-block joe Завершить сессии всех пользователей drush sql-query 'TRUNCATE TABLE sessions;' Завершить сессию определённого пользователя drush sql-query 'DELETE FROM sessions WHERE uid = 2;' Получить одноразовую ссылку для входа под админом drush uli Запустить крон drush cron Запустить крон без исключений drush cron-run Задать переменную drush vset variable_name 'value' Получить значение переменной drush vget variable_name Показать последние события в логах (watchdog) drush ws Показывать логи в реальном времени drush ws --tail Запустить свой код drush eval "variable_set('foo', 'bar');" Пересканировать весь код в модулях включая в себя каталоги, сохраняя расположение каждого интерфейса или класса в базе данных drush eval "registry_rebuild();" Если не вышло потому, что Drupal не загружается, сделать это таким образом: drush dl registry_rebuild drush rr Изменить уровень предупреждений Отображать только ошибки и предупреждения drush vset -y 1 Отображать всё drush vset -y 2 Скрыть всё drush vset -y 0 Включить режим обслуживания drush vset -y maintenance_mode 1 Войти в консоль MySQL drush sql-cli Импорт резервной копии базы данных drush sql-cli < dump.sql Экспорт резервной копии базы данных drush sql-dump | gzip --stdout > $(date +\%Y-\%M-\%d-\%H-\%M-\%S).sql.gz Удалить все таблицы базы данных (очистить базу данных) drush sql-drop Полезно перед импортом резервной копии базы данных. Отобразить все drush сайты drush site-alias Установить Друпал через Drush drush site-install Удалить все материалы определённого типа sudo drush generate-content 0 --kill --types=facebook,instagram,tweet Обратите внимание, должен быть установлен модуль Devel и Devel Generate. Альтернативой будет drush migrate-wipe Удалить тип материала drush php-eval "node_type_delete('job_posting')node_types_rebuild();menu_rebuild();" Генерировать произвольный контент sudo drush generate-content 20 --types=page Создать скелет для кастомного модуля drush mb my_module menu cron --write --name="My module" Ещё больше отличных комманд можно найти тут: groups.drupal.org/node/28088 Так же смотрите drushcommands.com