Configuration

The core of Drush Rebuild revolves around the configuration file. Consider the command drush @example.local rebuild. In this command, Drush Rebuild is going to rebuild the local development environment for @example.local, and it is going to do so based on the tasks defined in the configuration file.

To start with, you should know that the rebuild config has three main sections: general, sync/site_install, and drupal.

general

general:
  description: 'Rebuilds local development environment from remote destination'
  uli: true
  overrides: 'local.rebuild.yaml'
  default_source: '@example.prod'
  drush_scripts:
    pre_process: ['example.php', 'another.php']
    post_process: 'after_rebuild.php'

description

This key is self-explanatory. It is displayed to the user when they run drush @example.local rebuild.

uli

This key tells Drush to run drush @example.local uli after completing all the rebuild tasks. Set this to false, or leave it out entirely, if you don’t want that.

overrides

This key is used to specify the path to a local overrides configuration file. For example, if your main configuration was at /home/kosta/sites/example/resources/rebuild.yaml, your overrides would be at /home/kosta/sites/example/resources/local.rebuild.yaml.

This is useful when a team is using the same rebuild file. You can define a local overrides file, and exclude it from version control, so that each team member can customize the rebuild process to their liking.

default_source

Drush Rebuild lets you rebuild your local environment based on any source defined in your drush alias, so you could rebuild based on @staging or @prod aliases for example. But more often than not, you want your local development environment to match one remote environment. By defining default_source you can save yourself some typing. You’ll be able to run drush @example.local rebuild instead of drush @example.local rebuild --source=@example.prod.

drush_scripts

This section tells Drush to run drush @example.local php-script on the files specified in the pre_process and post_process sections. pre_process runs before any other step, while post_process comes at the very end. Note that returning FALSE from a Drush script will halt the rebuild process.

sync /site_install

The sync or site_install section tells Drush that we are either using sql-sync or site-install for rebuilding a local site. They are mutually exclusive; you can’t have both in the same config.

sql_sync

This section lets you define options for syncing a remote database to your local environment.

sql_sync:
  create-db: 'TRUE'
  sanitize: sanitize-email
  structure-tables-key: common

If you just wanted database syncing without any additional options, you could write:

sync:
 sql_sync: true

Note that any option listed in drush help sql-sync can be defined in your rebuild config file.

site_install

If you are rebuilding by re-installing an install profile, you can set options like:

site_install:
  profile: 'standard'
  account-mail: 'admin@localhost'
  account-pass: 'admin'
  account-name: 'admin'
  site-name: 'Local install'

Any option listed in drush help site-install can be defined in the config file.

Review

Let’s take a look at the entire file now:

general:
  description: 'Rebuilds local development environment from remote destination'
  uli: true
  overrides: 'local.rebuild.yaml'
  drush_scripts:
    pre_process: ['example.php', 'another.php']
    post_process: 'after_rebuild.php'

sync:
  default_source: '@example.prod'
  sql_sync:
    create-db: 'TRUE'
    sanitize: 'sanitize-email'
    structure-tables-key: 'common'
  rsync:
    files_only: 'TRUE'

drupal:
  variables:
    set:
      preprocess_js: 0
      preprocess_css: 0

  modules:
    enable:
      - devel
      - devel_node_access
      - dblog
      - views_ui
    disable:
      - overlay
      - syslog
    uninstall:
      - google_analytics

  permissions:
    anonymous user:
      grant:
        - access devel information
        - switch users
      revoke:
        - search content
    authenticated user:
      grant:
        - access devel information
      revoke:
        - search content