Drush Registry Rebuild
Keep Calm and Clear Cache!
This is an often used phrase in Drupal land. Clearing cache fixes many issues that can occur in Drupal, usually after a change is made and then isn't being reflected on the site.
But sometimes, clearing cache isn't enough and a registry rebuild is in order.
The Drupal 7 registry contains an inventory of all classes and interfaces for all enabled modules and Drupal's core files. The registry stores the path to the file that a given class or interface is defined in, and loads the file when necessary. On occasion a class maybe moved or renamed and then Drupal doesn't know where to find it and what appears to be unrecoverable problems occur.
One such example might be if you move the location of a module. This can happen if you have taken over a site and all the contrib and custom modules are stored in the sites/all/modules folder and you want to separate that out into sites/all/modules/contrib and sites/all/modules/custom. After moving the modules into your neat sub folders, things stop working and clearing caches doesn't seem to help.
Enter, registry rebuild. This isn't a module, its a drush command. After downloading from drupal.org, the registry_rebuild folder should be placed into the directory sites/all/drush.
You should then clear the drush cache so drush knows about the new command
drush cc drush
Then you are ready to rebuild the registry
drush rr
Registry rebuild is a standard tool we use on all projects now and forms part of our deployment scripts when new code is deployed to an environment.
So the next time you feel yourself about to tear your hair out and you've run clear cache ten times, keep calm and give registry rebuild a try.