So, after a day of very confused investigation, I've found that dreamhost/passenger is not following changed symlinks (I think). What's happening is:
~/sitename/current is a symlink -> ~/sitename/release/123
I tell capistrano to deploy the latest version of my code. It goes to ~/sitename/release/124 and pulls down the latest code from svn, and then modifies the ~/sitename/current symlink to point to ~/sitename/release/124.
Of course, apache/passenger is still running the old code (in .../123), so I go into .../123 and touch tmp/restart. This seems to restart the app, but it still runs the old code. I should note here that the root of this domain is ~/sitename/current/appname/public. As such, I'd think that, when restarted, passenger would follow the updated symlink to the new code, but this does not seem to be the case. In fact, the only way to get this to occur is to go to the web panel and edit the domain (but not actually change anything). Presumably this makes dreamhost reevaluate the root path.
Any idea why this is the case, and/or how to correct/work around it?