Pregunta

Estoy cargando archivos a mi carpeta public / files de una aplicación Rails de forma constante a través de una interfaz web.

No quiero mantenerlos en el control de la fuente, ya que duran casi 2 GB, por lo que cada vez que hago una cap deploy guardará esos archivos en releases / y reemplace 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 origen y reemplácelo con un enlace a un directorio externo que Capistrano no administre.
  • Cree una tarea de Capistrano para copiar el directorio a / tmp antes de implementarlo y luego vuelva a copiarlo en / public después de que haya finalizado la implementación.

¿Hay una forma estándar de hacer esto?

¿Fue útil?

Solución

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

Echa un vistazo a capistrano administra los directorios / log y / tmp.

Otros consejos

Para el registro futuro, esta es la tarea que solía hacer 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   

Ahora podemos simplemente usar: Linked_files en deploy.rb:

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top