2008-11-04 15 views
6

Estoy cargando archivos en mi carpeta public/files de una aplicación de Rails de manera constante a través de una interfaz web.Mantener archivos estáticos en el servidor al implementar con Capistrano

No quiero mantener estos en control de fuente ya que van por casi 2 GB, así que cada vez que hago un cap deploy guardará esos archivos en releases/ y reemplazará el directorio con la copia prístina almacenada en el repositorio .

Me pregunto cuál es la mejor manera de mantener esos archivos en el servidor, en el directorio current. Algunas de mis ideas son:

  • Elimine el directorio del control de fuente y reemplácelo por un enlace a un directorio externo que no esté administrado por Capistrano.
  • crear una tarea de Capistrano para copiar el directorio/tmp antes de implementar y luego copiar de nuevo a/pública después de que ha hecho el despliegue.

¿Hay una forma estándar de hacerlo?

Respuesta

6

Puede hacer que los archivos tengan un enlace simbólico a otro directorio en su máquina, por ejemplo, el directorio/shared en el mismo nivel que/current y/releases.

Salida Capistrano gestiona el/registro y/tmp.

7

Para el registro futuro, esta es la tarea que solía hacerlo con un directorio compartido:

task :link_shared_directories do  
    run "ln -s #{shared_path}/files #{release_path}/public/files" 
end  

after "deploy:update_code", :link_shared_directories 
2

Ahora simplemente puede utilizar: linked_files en deploy.rb:

set :linked_files, %w{config/database.yml} 

En En este caso, el archivo [target_dir] /shared/config/database.yml debe existir en el servidor.

Cuestiones relacionadas