Deployment is a …

Volume 9, Issue 88; 22 Sep 2006; last modified 08 Oct 2010

You can guess the rest of the title. Pardon me while I grumble a bit.

Dance, monkey boy, dance.

Debugging remote deployments is really painful. (Big surprise there, I'm sure.)

The root of my problem is that I've allowed my development environment and my deployment environment to diverge. That's never good. As the old joke goes, the patient says to his doctor, “Doctor, doctor, it hurts when I do this,” and the doctor replies, “Well, then, don't do that.”

I have always planned to deploy the photographic metadata code I've been hacking at on As I'm hosting that at DreamHost, I have little control over the deployment environment. Unfortunately I didn't notice that they're running Ruby 1.8.2 where I'm running 1.8.5. In fairness, even if I had, I might not have expected the difference to bite so hard.

Something is different in the net/http library. The code I wrote in 1.8.5 for providing a body to an HTTP post doesn't work on 1.8.2 (which doesn't seem to provide a body= method on HTTPRequest).

I looked at the 1.8.2. version of net/http and decided to punt, that is, to build 1.8.5 on DreamHost. (I'm pretty happy with DreamHostI wish they included mod_conneg in their Apache config, though. in part because I can build and use my own stuff there.) The find, download, unpack, configure, build, install dance for Ruby is pretty straightforward.

Of course, then I find that there are a bunch of gems missing. Luckily gem install works just fine (it doesn't on my laptop for reasons I've never been able to adequately understand).

But the RMagick gem (which, ironically, won't actually be used on the web-deployed version but is needed for making thumbnails when annotating images on the local filesystem), won't install because the version of ImageMagick is too old.

How far back does this chain of prerequisites go, exactly?

I had this terrible feeling that ImageMagick was going to be much more difficult to install. It wasn't, perhaps mostly because I don't really care if it works or not. That usually helps in software development.

Dance, dance, dance…


What's mod_conneg? Google's got nothing. :)

—Posted by Michal Wallace on 24 Sep 2006 @ 04:10 UTC #

I guess it's called mod_negotiation these days. Or maybe it always was. I thought it was mod_conneg once though.

—Posted by Norman Walsh on 24 Sep 2006 @ 01:30 UTC #

have u tried smartfrog?

in situations where using cfengine is too much, make is not maintainable, or ant treats deployment as the last step of build (in reality using Ant to build *and* deploy software is fine if u think about it a little bit)...I have found smartfrog a robust and easy solution.

Yes there is overlap in smartfrog with other things, but a lot of benefits as well.

gl, Jim Fuller

—Posted by Jim Fuller on 24 Sep 2006 @ 03:52 UTC #

I just ran into the same problem today. So very painful. HTTP::Post is so straightforward in 1.8.4. I'm still struggling with getting the same code to work in 1.8.2.

—Posted by jeff on 07 Nov 2006 @ 12:27 UTC #