I just found a useful Capistrano recipe for keeping user generated content (a.k.a. uploads) persistent between deployments:
http://www.simonecarletti.com/blog/2009/02/capistrano-uploads-folder/
EDIT: I would like to extend the script to many folders. Any idea?
Capistrano as my default deployment tool
In the last post (a whiiile ago) I described my Git workflow to deploy my production server. One of the drawbacks was that everytime I pushed changes to the main repo I had to manually log in my Dreamhost shared host via SSH and then: 1) pull changes, 2) migrate database schema, 3) rebuild sphinx index, 4) restart passenger server. I wrote a bash script to get the job done, but it was prone to errors and not elegant, so I decided to give Capistrano a try.
After reading the Getting Started and From the Beginning guides I got a good idea of what to do next. Basically my setup is as follows:
File: benoror@macmini:~/simpleapp/Capfile
File: benoror@macmini:~/simpleapp/config/deploy.rb
So now when I make changes to the code I simply follow this workflow in my local machine:
The next step is to setup a staging server, until then see you soon ...
After reading the Getting Started and From the Beginning guides I got a good idea of what to do next. Basically my setup is as follows:
File: benoror@macmini:~/simpleapp/Capfile
File: benoror@macmini:~/simpleapp/config/deploy.rb
So now when I make changes to the code I simply follow this workflow in my local machine:
- git add . && git commit -a -m "Commit Msg" && git push
- cap deploy
- cap deploy:migrate
That's it!
The next step is to setup a staging server, until then see you soon ...
Using Git in Rails production server workflow
In my projects I use Git as part of the deployment process. When I'm developing a new app and it's ready for production first I setup a non-bare repo in the Rails project itself:
benoror@macmini:~/simpleapp $ git initThen I just zip and copy the project to the production server. After extract it I clone it as a bare repo:
benoror@macmini:~/simpleapp $ git add .
benoror@macmini:~/simpleapp $ git commit -a -m "First commit"
benoror@dreamhost:~ $ git clone --bare simpleapp simpleapp.gitThis bare repo will act as the main repo (who said central?). Then I just add a remote origin in my computer:
benoror@macmini:~/simpleapp $ git remote add origin ssh://benoror@production.com/~/simpleapp.gitI assume you already copied your SSH keys and credentials. The workflow is as follows:
1. When I make changes in my computer just commit and push:
benoror@macmini:~/simpleapp $ git push origin master
2. Then I log into my production server and pull changes in the non-bare repo:
benoror@macmini:~/simpleapp $ ssh production.com
benoror@dreamhost:~ $ cd simpleapp
benoror@dreamhost:~/simpleapp $ git pull
3. I have automatized the deployment process with a script that pull changes, restart Passenger, migrate db in case of schema has changed and finally re-index Sphinx.
:wq
Elementary-Mod AUR Package
I just uploaded a PKGBUILD for this great GTK theme to AUR.
*It only works with patched package nautilus-elementary.
Subscribe to:
Posts (Atom)