Blog

You should follow us on twitter or subscribe to our RSS feed if you want to stay on top of all the latest.

dylan's picture

Deployment with Capistrano Part 2: Drush integration, Multistage, and Multisite

In my last post, a basic intro to to running cap deploy was presented. Now, let's look at some more advanced scenarios. (See Part 1 for the actual task definitions described here). Multistage: Deploy to different environments (such as testing vs. production). Drush Integration: Use the power of Drush to extend Cap's reach into Drupal's internals. Multisite: Run many sites from a single code base. Read More…

dylan's picture

Capistrano: Drupal deployments made easy, Part 1

I'm a big fan of having an automated deployment process. It's really the web development analog to the "one step build process", as described in the Joel Test. In the past I have used various shell scripts to perform this task, but I have recently become a convert to Capistrano (or "cap" for short). With Capistrano, uploading your code to the test server is as simple as typing cap deploy. When you're ready to launch in production, it's just cap production deploy. From capify.org: Simply put, Capistrano is a tool for automating tasks on one or more remote servers. It executes commands in parallel on all targeted machines, and provides a mechanism for rolling back changes across multiple machines. In detail, here are the features that got me hooked. There's a lot more that cap can do, and I'll describe some more tricks in part 2 of this post. Atomic deployments with error checking. Cap uses a set of symlinked directories, and the links are updated during the final step. It also won't allow a deployment to keep plowing ahead if an intermediate step fails. This makes your deployment atomic; it will either fail or succeed entirely. Fast rollback. If something does go wrong, getting back to the previous state is as simple as cap deploy:rollback. Parallel execution. If you use multiple servers in a load-balanced environment, cap can make managing them easier. Multistage deployments. "Stages" are different server instances of your code. You may have different servers for development, content entry, and production. With the Multistage extension, cap can share code for common tasks between these stages. Read More…

vosechu's picture

The Power of Yes

Of all the powerful words in any language assertion is in my opinion the absolute most powerful. With affermative language we are able to create trust, enact people's will, and begin processes. Silly of course, to take one word to mean so much but I believe everyone can agree that when a client asks for something 'yes' should be the thing that jumps to your lips immediately, hopefully without qualification but at times you have to add on things like 'and it will cost x' or ', now lets look at the plan and see how we can make this a reality'. But this post isn't about clients, it's about our language and framework choices. Read More…

joaquin's picture

How to Create a New Facebook Network for Your Business

Facebook networks are one of the major ways that it allows people to connect to each other. Networks come in a few different types including: Regions (geographic) Colleges Workplaces High School Read More…

dylan's picture

Bulk generating menu hierarchies

If you have ever needed to bulk generate menu items in Drupal (I used this for theming some drop-downs), here is a snippet to accomplish it. The third parameter is for recursively creating a hierarchy, so be careful with it – you can blow up the menu admin page in a hurry! This code requires the devel module; the ambitious reader might consider adapting this to patch devel itself. Read More…

vosechu's picture

Multiple dynamic tabs in Brightcove 3

This week I had the wonderful opportunity to work on an interesting problem that as far as I can tell hasn't been documented. The call came out that we needed to generate a couple dynamic tabs on the top of our player for smart playlists. Now, we already have one dynamic playlist so I thought it was going to be a fairly simple logical step up to three but I was really, really wrong. Read More…

koes's picture

I like to be spoiled, but not too much

First of all, let me preface this post by saying: I love web standards, I love browsers that support web standards, I love most internet browsers except for Internet Explorer (maybe I'll make an exception for IE8). Now that I have gotten those out of the way, I have to say that to a certain extent, I can see how Internet Explorer helps me in becoming a better standard compliant HTML coder. Here are a couple case studies: A client wanted to have a paypal donate button to live on the sidebar. I requested for the paypal's cut-n-paste code from the client and was promptly responded to. I plugged in the code into the paypal donate box and voila!, works like a charm, but only in Firefox and Safari. Read More…

Pages