¿Cómo hago un enlace simbólico de las imágenes de mis productos en producción en un despliegue de Capistrano?

Aquí recibí una solución a mi problema que cada vez que implemento mi aplicación Spree Commerce con Capistrano mis imágenes se eliminan (todavía están allí, pero los nombres de las carpetas son incorrectos) y tengo que agregarlas nuevamente a través de admin.

Tanto en este grupo de Google como en la respuesta a la pregunta, se dice que symlinking es una solución.

Debe asegurarse de que su directorio RAILS_ROOT / public / spree se está enlazando desde el directorio compartido de Capistrano y no se vuelve a crear cada vez que lo implementa. Si este enlace simbólico no está sucediendo, sus imágenes se perderán en cada implementación.

He intentado algunas cosas pero no logro vincular mis imágenes.

En el servidor están en la carpeta / public / spree / products. Lo que intenté es esto:

namespace :deploy do task :start do ; end task :stop do ; end task :symlink_shared do run "ln -nfs #{shared_path}/shared/spree/ #{release_path}/public/spree/"" end end 

Pero esto no funciona. No sé en qué camino compartido tengo que entrar. Espero que alguien pueda ayudarme o proporcionar un enlace con una explicación.

Si está usando Capistrano 3, puede usar el mismo método que expliqué en la respuesta a mi propia pregunta aquí .

En esencia :shared_children era cómo lo haría en Capistrano 2, pero se eliminó a favor de :linked_files y :linked_dirs .

Simplemente cree su directorio public/spree/ en su repository, agréguelo a .gitignore si lo necesita (no importa si Git los rastrea o no), luego edite su deploy.rb para usar :linked_dirs :

 set :linked_dirs, %w(public/spree) 

De esta manera, cuando Capistrano implemente, creará automáticamente el directorio en shared/ y lo vinculará a su versión actual. Tenga en cuenta que si necesita que los archivos estén presentes en ese directorio, debe copiarlos para shared/ manualmente, utilizando una herramienta como rsync . Lo mismo ocurre con los archivos como database.yml (para los que usaría :linked_files ).