rails deploy ruby-on-rails deployment capistrano

ruby-on-rails - rails - capistrano deploy



Mantenga archivos no versionados al implementar con Capistrano (3)

Aquí hay una gema muy pequeña y útil: https://github.com/teohm/capistrano-shared_file . Verifique los documentos de la gema, todo es simple.

Instalar gema, en deploy.rb requiere y solo proporcione una matriz de archivos que desea compartir entre versiones en la opción shared_files :

set :shared_files, %w(config/database.yml)

Almacene sus archivos en <project_dir>/shared/files/YOUR_FILE_GOES_HERE . Y se vincularán simbólicamente a la raíz de su aplicación en cada implementación. Eso es todo.

Cada vez que ejecuto la implementación de capitalización en el servidor remoto, pierdo algunos archivos no versionados porque capistrano crea un nuevo directorio y comprueba la revisión del encabezado. Pero hay algunos archivos que no tienen versiones, como los avatares de los usuarios (clips) e imágenes cargadas que no se copian a la nueva versión actual.

¿Cómo puedo solucionar esto?

¡Gracias!


Personalmente, creo que la mejor manera de tratar con ese tipo de cosas es almacenarlas en la carpeta compartida y crear una tarea en capistrano para crear enlaces simbólicos a los recursos compartidos.

Aquí hay un ejemplo de uno de mis proyectos:

set :shared_assets, %w{public/images/products public/images/barcodes} namespace :assets do namespace :symlinks do desc "Setup application symlinks for shared assets" task :setup, :roles => [:app, :web] do shared_assets.each { |link| run "mkdir -p #{shared_path}/#{link}" } end desc "Link assets for current deploy to the shared location" task :update, :roles => [:app, :web] do shared_assets.each { |link| run "ln -nfs #{shared_path}/#{link} #{release_path}/#{link}" } end end end before "deploy:setup" do assets.symlinks.setup end before "deploy:symlink" do assets.symlinks.update end


Agregar sus rutas a shared_children también funciona y en realidad es solo una línea en su deploy.rb:

set :shared_children, shared_children + %w{public/uploads}

lo encontré aquí: astonj