June 1, 2008

Bulk view

Drupal: Lather, rinse, repeat – Cleaner development with installation profiles and Makefiles

I’m beginning to really like Drupal, a PHP-based content management system. Working with Drupal feels almost like working with Emacs because of the number of hooks that people have designed into the system. =) So here’s a Drupal tip for fellow newbies.

When you’re developing a site in Drupal, it’s a good idea to make sure that you can reproduce your setup on a different system. One way to do that is to periodically do a fresh install of Drupal with your modifications, and see if everything still works.

For example, on my system, I have an installation profile that enables and sets up Drupal the way I want. I also have a script that deletes and recreates the database, then restores the default settings.php. To refresh my system, all I have to do is type “make clean”, then open my Drupal site in the browser. After I specify the installation profile for my project and the database connection details, Drupal sets everything else up. Because I use installation profiles and source code control (svn on this project), I can commit my changes, update the copy on the test server, and easily reproduce my system there. Using installation profiles saves me the time that I would’ve spent setting up and configuring all the modules (and in the right order!), and this practice can help you too.

Here’s how to get started:

  1. Make a copy of sites/all/default/settings.php before you configure your system, or get the settings.php from a clean (never-installed) Drupal directory. I like putting this copy in sites/all/default/settings_default.php.
  2. Create an installation profile for your system. The easiest way is to use the install_profile_wizard module to generate a base installation profile, then modify it as needed. Put this profile somewhere in your profiles directory.
  3. Create a Makefile, shell script, or batch command that drops the database you’re using, recreates the database (granting any permissions necessary), and copies sites/all/default/settings_default.php to /sites/all/default/settings.php

Then, when you’re developing code, you can just call your Makefile/script/batch command to start from a (relatively clean) database.

Lather, rinse, repeat.

Weekly review: Week ending June 1, 2008

Last week:

  • Gave two presentations in person: I.B.Millennials at the Regional Technical Exchange at Sheraton Parkway, and Top 10 [IBM] Web 2.0 Tools You Should Try at the TechConnect event at the IBM Toronto Lab.
  • Much progress on the Drupal project I’m working on. =) I’m getting the hang of theming it, too!
  • Progress on my book. It’s a lot easier when I think about blog posts instead of 2000-word chunks, and blog readers instead of book readers… =)
  • Applied for clearance from Japan (for permanent residency application)
  • Assembled paperwork for extension of work permit
  • Checked out a whole bunch of books from the library. Hooray!

Next week:

  • One virtual presentation: Taking It Offline/Online – how to combine your online and offline social networking
  • Do more work on the Drupal project – theming, multisite
  • Wicked Cool Emacs: filtering spam, scoring mail, setting up profiles
  • Send application for extension of work permit
  • Check with University of Toronto regarding reference letter