views:

239

answers:

1

I have a Rails app that is stored in CVS because that is our corporate standard. It needs to be deployed to a single production server that is running Rails using Apache and Phusion Passenger.

About the production server:

  • RedHat Enterprise Linux 5.1
  • The app is used internally at our company, not hosted externally.
  • I have root access and can install necessary software.
  • I have ssh access to the box, and can also run cvs there if needed.

Current Solution:

I have been using a patched version (a couple of CVS fixes) of capistrano for this, but it's overkill. (I've looked at vlad the deployer, but it does not support CVS.) I want something simpler, with fewer dependencies/patches.

Desired Solution:

  • I want deployment to be a single command that checks out the tip of the CVS tree and deploys it.
  • I want rollback to be a single command that reverts to the previously installed version.
  • A couple of Rakefile tasks, or a shell script would be fine.
  • Releases need to be uniquely identifiable--either via timestamp, CVS tag, or some sort of version number.
+2  A: 

Capistrano is the current gold standard for Rails application deployment; if you already have it working, why do you want to change it?

Matt Darby
Because it only works after I manually apply a couple of patches. I don't want to do that every time I upgrade. Also, since my situation is so simple, I'm thinking Capistrano could be replaced by a short shell script that means fewer dependencies, less maintenance.
Pete TerMaat
So instead of manually patching Capistrano for a future update that you might never get to (I mean, no one's even working on it actively!), you'd rather write a custom script now that will also require maintenance if you ever want to change it? Psh. Use Capistrano. :)
Ian Terrell