4 ms·
I couldn't agree more with this. I spent the best part of a day setting up Capistrano and Railsless-Deploy to obviate the need for manual FTP upload. That was o
by FuzzyDunlop 15y ago
I couldn't agree more with this. I spent the best part of a day setting up Capistrano and Railsless-Deploy to obviate the need for manual FTP upload. That was only at the start of this week but the flexibility and elegance of it (comparative to opening up an FTP client) has enchanted me. A few shell scripts later on the target server and it's sorted (with a few niggles still to be ironed out).
I've been really disillusioned with FTP since just one flaw in the setup (as much as setting the wrong group on files or someone chmodding them all over the place) can muck your upload up. So you have to ssh in, change it all back, and retry.
If you use a VCS you're probably uploading direct from your checkout, or you're exporting it, if you're not savvy with the system. So you get dotfiles scattered throughout, or an inaccurate export if there was a forgotten commit or update.
Maybe your project has dependencies fetched in through some sort of manager. You change them, fire up the FTP and upload, and forget to log into the server to run an update or install to fetch in the altered dependencies. If you're a PHP dev (who more likely than not doesn't know what PEAR is) coming into a Python, Ruby, or Node environment, for example, this one will sting you every time until you understand that you generally won't commit dependencies to a repo - you'll fetch them in and rebuild when necessary.
How about restarting the server if you need to? Cleanup? Rolling back quickly?
Even taking it all into consideration you have at the very least a two step process: upload your files, ssh into the server to run additional setup. If you end up doing this a lot in a short space of time due to carelessness and unexpected bug-fixing, you'll get frustrated very quickly.
Having suffered these problems ever since I started my job, it feels liberating to keep my copy of FileZilla closed in favour of typing a single command into my console:
cap [staging|live] deploy
And if it isn't adequate, it's no problem. I can code another task and alter its behaviour for the different environments.
It's liberating.
I had a terrible hour the other day wondering why identical code behaved differently on two identical setups. There was much FTP uploading and server restarting. Turned out that file permissions weren't being set the same. It would have been a quick fix without all the manual work.
- astrodust 15y agoIf you don't have a deployment strategy then you probably shouldn't be using FTP in the first place, it's a sign you're doing something wrong. Capistrano, as you mention, and tools like it, are the only way to go now. You can't just slap a few files on the server and call it a day like you could with some static HTML sites.
- tosbourn 15y agoI very much agree with the need for a deployment strategy. Unfortunately common literature on the subject still seems to point towards using FTP as the corner stone of the release.