Estaba teniendo problemas con Capistrano 1.4 para hacerlo funcionar con Dreamhost y he tenido que actualizarlo a la nueva versión 2.0, que trae algunos cambios que me han desorientado al principio, más que nada porque en el manual mítico oficial no han actualizado nada. Luego descubrí que la nueva web oficial es otra, aunque apenas tiene documentación.
Los pasos que he seguido son:
Desde el panel de control de Dreamhost:
- Añadir un nuevo subdominio, como myapp.jesuscarrera.info, dándole soporte para FCGI, y añadiendo /current/public al directorio sugerido.
Más tarde, en cuanto se propaguen las DNS y podamos acceder a http://myapp.jesuscarrera.info/current/public, y antes de ejecutar cap deploy, deberemos borrar manualmente estos dos directorios, porque cap deploy creará un symlink para que Capistrano y Subversion funcionen bien juntos.
- Añadimos la base de datos que vallamos a utilizar.
- Creamos el repositorio de Subversion. Yo tengo creado un subdominio para acceder a esos repositorios. Su URL quedaría así: http://svn.jesuscarrera.info/myapp
En nuestra aplicación (máquina local en desarrollo).
- Editar el config/database.yml para que en :production tenga los datos de Dreamhost.
- En config/environment.rb descomentar la línea:
- En public/dispatch.* cambiarle la primera línea por ésta:
- En public/.htaccess asegurarnos de que ésta línea tenga .fcgi y no .cgi
- Añadir después de RewriteEngine On lo siguiente, para que muestre una página de mantenimiento si existe (cuando ejecutamos cap deploy:web:disable).
- Instalar Capistrano 2.0
sudo gem install capistrano - Añadimos los archivos de Capistrano a nuestra app. Ejecutamos desde el directorio myapp:
capify .Ésto crea dos archivos: Capfile y config/deploy.rb.
- Editamos config/deploy.rb para que quede algo así:
A mi me ha funcionado sin estas últimas líneas, pero puede que en algunos casos sean necesarias:
Recuerda que para que no pida las claves todo el rato podemos autorizar nuestro equipo para SSH. - Realizamos nuestra primera importación al repositorio
svn import myapp svn+ssh://[email protected]/home/jesuscarrera/svn/myapp -m "Initial import"
- Renombramos el original (o si eres valiente también lo puedes borrar), y nos descargamos la primera versión del repositorio:
mv depot depot.imported
svn co svn+ssh://[email protected]/home/jesuscarrera/svn/myapp myapp - Preparamos el servidor para recibir nuestra app:
cap deploy:setup - Enviamos nuestra aplicación aplicando migraciones:
cap deploy:cold - A partir de ahora cada vez que realicemos cambios en nuestra máquina local en desarrollo deberemos en primer lugar enviarlos al repositorio, y luego actualizarla en producción:
svn commit -m "Change description"
cap deploySi hemos añadido migraciones sería con:
cap deploy:migrationsSi algo va mal podemos volver a la anterior versión con:
cap deploy:rollbackSi vamos a realizar un mantenimiento importante podemos deshabilitar y habilitar la web con:
cap deploy:web:disable
cap deploy:web:enablePara ver otras tareas:
cap -T
Yo lo he probado con la aplicación que te enseña a hacer el fantástico libro Agile Web Development With Rails. La podéis ver en depot.jesuscarrera.info/store. Ha funcionado tan bien y a la primera que hasta me ha sorprendido!
Hoy le he dado una alegría a una amiga desesperada porque había perdido unas fotos muy importantes de la tarjeta de su cámara gracias a 













