config
Ja, Drush auch kann Autocompletition, zu deutsch "Autovervollständigung"
und das anscheinenend nicht erst seit gestern, obwohl erst gestern entdeckt...
Tab-Vervollständigung
Ganz genau genommen, spricht man in diesem Fall der Autovervollständigung von einer Befehlszeilenergänzung bzw. Tab-Vervollständigung.
Es besteht auch im Drush-Kontext die Möglichkeit Drush-Befehle, globale Drush-Optionen und den spezifischen Optionen zu einem Drush-Befehlen
durch "tabben" (dem ein- oder zweimaligen Drücken der Tabulator Taste) in der Shell zu vervollständigen.
Beispiele
Tab-Vervollständigung von globalen Drush-Optionen:
--backup-location --cache-class-<bin>
--cache-default-class --choice
--command-specific --complete-debug
--config --confirm-rollback
[...]
Tab-Vervollständigung von Drush-Befehlen, die mit sql-
beginnen:
sql-cli sql-conf sql-connect sql-create sql-drop
sql-dump sql-query sql-sanitize sql-sync
Vervollständigung der Optionen, die mit dem Befehl sql-dump
nutzbar sind:
--create-db --data-only --gzip --result-file --structure-tables-key
--tables-list --database --db-url --ordered-dump --skip-tables-key
--tables-key
In der Regel kann man eine Drupal-Site mit einem Projekt gleichsetzen, Projekte nutzen eine Versionsverwaltung, immer häufiger ist dies Git.
Je mehr ich Git nutze, je weniger nutze ich die Möglichkeiten der klassischen Drupal-Multisite-Funkionalität, dem Teilen von Drupal-Core und Contributed-Modules über viele Drupal-Sites hinweg.
Im folgenden möchte ich diese (Verzeichnis-)Struktur innerhalb des Git-Repositories beleuchten und in diesem Zusammenhang Ansätze von spezielleren Drush-Konfigurationsdateien zeigen, welche sich in Drupal-Projekten für mich etabliert haben, ein Teil hiervon ist Drupal-7 spezifisch.
|-- drupal
| `-- sites
| |-- all
| | |-- modules
| | | |- features
| | | |- contrib
| | | `- custom
| | `-- themes
| |-- default
| | |-- default.settings.php
| | |-- files
| | |-- themes
| | `-- settings.php
| |-- example.sites.php
| `-- sites.php
|-- dumps
| `-- 20120615-185144.sql
|-- etc
| |-- apache2
| | `-- sites-available
| | `-- example.com
| `-- drush
| |--- aliases.drushrc.php
| |--- git.drushrc.php
| `--- example.drushrc.php
|-- privatefiles
| `-- IMG_6445.JPG
`-- salt
`-- salt.txt
- drupal
Die Drupal Code-Basis und DocumentRoot des Webservers.
- dumps
Hier liegen die Datenbankdumps
- etc
Projektrelevante Konfigurationsdateien, relativ zur Wurzel des Dateisystems.
- privatefiles
Dateien die über Drupal verwaltet werden, (Ziel beim Hochladen: Private Dateien).
- salt
Beinhaltet in der Datei
salt.txt
, den aussettings.php
ausgelagerten Salt
Rudimente für ein Drupal-Deployment mit
- Lokaler Entwicklungumgebung
- Stage-Umgebung
- Live / Produktionsumgebung
unter Verwendung, der in Drupal-7 neu eingeführten Multisite-Features in der Datei sites.php, Drush-Aliases und einer speziellen settings.php.
sites.php -- Verzeichnis Aliase in Drupal 7.xDie in Drupal 7.x neu eingeführte Datei sites.php
stellt erstmalig Verzeichnis-Aliase für Drupal-Multisites zur Verfügung. So ist es jetzt möglich mit verschiedenen Domains bzw. VirtualHosts ein bestimmtes Verzeichnis innerhalb von sites anzusprechen, ohne über z.B. Symbolische Links zu gehen, was in vorgigen Drupal-Versionen zur Folge haben konnte, daß Datei- oder Modulpfade beim "umbiegen" von der Dev-Site example.mydomain.de auf die Live-Site example.com divergent sind.
// sites/sites.php
// (LOCAL) DEV SITE
$sites['example.localhost'] = 'example.com';
// STAGE SITES
$sites['stage-example.mydomain.de'] = 'example.com';
$sites['stage.example.com'] = 'example.com';
// LIVE SITE
$sites['example.com'] = 'example.com';
@see /path/to/drupal7/sites/example.sites.php
Befehl: git config
git config --global user.email "floh@netzaffe.de"
Git-Konfigurationsdateien: /etc/gitconfig, ~/.gitconfig, .git/config
Auswertungsreihenfolge:
Wer kennt das nicht, Freie Software ist für gewöhnlich sehr gut kommentiert, so auch /etc/samba/smb.conf, die Konfigurationsdatei von Samba.
Diese besteht zu über 90% aus Kommentaren...
Um die Direktiven schneller im Blick zu haben, können die folgenden Snippets in ~/.vimrc oder /etc/vim/vimrc eingetragen werden, die Kommentare werden gefaltet.
Die Konfigurationsdatei für drush
Hier verwendet, drush für Drupal 6.x.
-
<?php
-
$options['r'] = '/home/foobar/drupal/6.x';
-
-
$options['v'] = 1;
-
-
'common' => array('accesslog', 'cache', 'cache_block', 'cache_filter', 'cache_form', 'cache_menu', 'cache_page', 'cache_update', 'history', 'search_dataset', 'search_index', 'search_total', 'sessions', 'watchdog'),
-
);
-
-
$options['handler'] = 'wget';
no-grab
default-cache-ttl 1800
debug-level basic
log-file socket:///home/florian/.gnupg/log-socket
to be continued.
Um einem "White-Screen" vorzubeugen wenn zu viele Drupal-Module installiert sind,
setzen wir die memory_limit in /etc/php5/apache2/php.ini höher.
Um beim Einfügen von mehreren Zeilen aus dem Zwischenspeicher keinen häßlichen Treppeneffekt in vim zu bekommen genügt ein
Die folgende Zeile in /etc/vim/vimrc oder ~/.vimrc eingetragen verbindet die Taste F9 mit dem Paste-Modus