Chris Tankersley has been doing PHP development for 9 years and has experience with both Drupal and non-Drupal projects. He discusses various tools for local Drupal development including Acquia Dev Desktop, Vagrant, Drupal SimpleTest, Drush, Backup and Migrate, Devel, and Features. He emphasizes writing tests before coding, using caching, and leveraging these tools to improve performance, portability, and the development workflow.
2. ChrisTankersley
Doing PHP for 9Years
Lots of projects no one uses, and a few that
some do
TL;DR https://github.com/dragonmantank
Heavy Drupal Development for 2 years
May 16th, 2013 php|tek 2013 2
3. Don’t use Drupal
May 16th, 2013 php|tek 2013 3
6. Pre-built *AMP Stack
Available for Drupal 6 or 7
Install and Ready to Go
May 16th, 2013 php|tek 2013 6
Advantages
Disadvantages
Not built for multiple installs
Can’t use for existing sites
Only forWindows and Mac
7. Best to use for module or theme
development
I don’t like it for full site development
May 16th, 2013 php|tek 2013 7
8. Make use of the “Sites” option to help
separate work
On Mac, only the /sites/all/ folder is writable
Even Sites you create are not writable
Don’t put the entire stack inVC, just your
work
May 16th, 2013 php|tek 2013 8
9. May 16th, 2013 php|tek 2013 9
Full server to run code
Self contained and can be replicated
Most modern machines can doVM
Advantages
Disadvantages
Uses more resources
Easier to break
10. Best to use for full site development
Or use it all the time, it’s nice to have an
environment you control
May 16th, 2013 php|tek 2013 10
11. Try and pick a distro that is close to your production
setup. If you are running Redhat in production, set up
an CentOS box
Set up the document root for your web server to be
the /vagrant folder (or sub folder, depending on your
site layout).This way your site will run automatically.
If you are running CentOS and Apache, disable
SELinux so that Apache will use the /vagrant folder
Don't use PHP 5.4 with Drupal 7 or lower
Make sure APC, or some opcode cache, is installed
Provide lots of RAM, at least 1GB
May 16th, 2013 php|tek 2013 11
12. Run everything off of your local machine!
Great if you can do it, I like vagrant better
May 16th, 2013 php|tek 2013 12
15. Write your tests before you code
Watch it fail
Write code to make your tests pass
Feel better
May 16th, 2013 php|tek 2013 15
16. Drupal ships with SimpleTest baked in
Supports unit testing and functional testing
Unit tests are done by extending
DrupalUnitTestCase
Functional tests are done by extending
DrupalWebTestCase
May 16th, 2013 php|tek 2013 16
18. Unit tests do not bootstrap Drupal, so are
very quick
FunctionalTests bootstrap Drupal, so are very
slow
May 16th, 2013 php|tek 2013 18
19. The test runner is AJAX, so it can break very
easily
Debugging can be hard since extra output
breaks the test runner, and since the DB is
destroyed watchdog() is useless
You can use $this->verbose(‘message’) or
debug(‘message’) though
May 16th, 2013 php|tek 2013 19
21. Dump your database to an SQL file
$ drush sql-dump --result-file=/PATH/TO/dump.sql
Back up the entire site to a tarball
$ drush archive-dump default
View watchdog entries
$ drush watchdog-list
Update Drupal and modules
$ drush pm-update
Download module
$ drush pm-download [module_name]
May 16th, 2013 php|tek 2013 21
22. I couldn’t think of a good tagline that should go here
May 16th, 2013 php|tek 2013 22
23. Allows you to quickly back up the DB and
move it
No need to use a DB GUI
Can do automatic local or remote backups
Useful for moving databases from one server
to another
May 16th, 2013 php|tek 2013 23
24. Exposes a lot of the structure of Drupal
Things like nodes can be clicked through to see
their object structure
Can auto-generate dummy content
Better debugging output
dpm() and dvm() for pretty output
dpr(), kpr(), and dvr() will dump to the page
header
May 16th, 2013 php|tek 2013 24
25. Package system for Drupal
Takes a lot of stuff in the DB and makes it
exportable and portable via code
Lot of stuff works out of the box, extra
modules like UUID, boxes, and features_extra
pick up the slack
ftools makes updating features easy
May 16th, 2013 php|tek 2013 25
27. Page caching for full output caching
Block caching so that dynamic content can
still update if it needs to
You can configure how long to cache things
for
May 16th, 2013 php|tek 2013 27
28. In Full Page Caching, most of the PHP isn’t
run
Effectively turns your site into a static site (kind
of)
With block caching, not all blocks will cache.
What and when to cache is up to the block
May 16th, 2013 php|tek 2013 28
29. It’s kind of like nuclear fusion, but without all the explosions
May 16th, 2013 php|tek 2013 29
30. Will group needed JS and CSS files
together, reducing the number of HTTP
requests
Will minify CSS, reducing some of the
transmission size
YOU have to make your modules take
advantage of it, though
May 16th, 2013 php|tek 2013 30
31. Let Drupal know about your files
drupal_add_js()
drupal_add_css()
Add the files to your .info file
Don’t just add JS and CSS files via <script>
and <style> tags in your theme
May 16th, 2013 php|tek 2013 31