debug drush (and php-cli)

Drush uses the cli version of php so traditional debugging tools and functions don't work.

  1. // add --debug to the end of a drush command
  2. drush vget site_name --debug
  3.  
  4. // output a message to the screen
  5. drush_log("my message");
  6.  
  7. // get information over the php version (php_info)
  8. drush php-eval "phpinfo();" | less
  9.  
  10. // to debug an aegir command
  11. // /usr/bin/php /opt/drush/drush.php --php='/usr/bin/php' --root='/var/aegir/platforms/drupal-7.22' provision-save '@platform_drupal722' --backend 2>&1
  12. /usr/bin/php /opt/drush/drush.php --php='/usr/bin/php' --root='/var/aegir/platforms/drupal-7.22' provision-save '@platform_drupal722' --debug

Display errors - WSOD

The bootstrap override the values you could set to display error ad the reporting level. To be 100% sure everything is printed out when something fails in a blank screen (wsod), make index.php like this:

Properly render a field

Drupal offers a few (sometimes complicated...) solutions to output a field. Lets take an example with a date field.
To display the full rendered field: field_view_field()

Using once()

ensure ajax reload don't apply the behaviours for items already processed

Change the theme

Programmatically change the theme on runtime by implementing hook_custom_theme()

Manually clear caches

for views and panels

Add a Jquery ui library

get the library names to use in /misc/ui folder

Embed a custom page

Get the rendered output of a custom page created with page manager (ctools) module

Embed a mini panel

Get the html output of a mini-panel

alter / automatize the install process

in the .profile file of the install profile (here "mysnippet" profile)

Aegir: perform custom tasks after a new site is installed

in a custom module, in a file called mysnippet.drush.inc (keep in mind that the install process is handled by drush...)