Capistrano borrando imágenes de clip

Por alguna razón, Capistrano elimina todas las imágenes de mi base de datos cada vez que coloco todas las imágenes que se eliminan de todos los usuarios. Por lo general, lo que he hecho es tener que rellenar la base de datos con las mismas imágenes que había sido borrada por capistrano. He adjuntado mi archivo deploy.rb, ¿alguien me puede dar una idea?

require "bundler/capistrano" set :rvm_ruby_string, '1.9.3p429' set :rvm_type, :user set :user, "" set :password, "" set :domain, "" set :applicationdir, "" set :scm, :git set :repository, "" set :git_enable_submodules, 1 # if you have vendored rails set :branch, "release" set :rails_env, 'production' #set :git_shallow_clone, 1 set :scm_verbose, true # roles (servers) role :web, domain role :app, domain role :db, domain, :primary => true set :port, 22 # deploy config set :deploy_to, applicationdir set :deploy_via, :remote_cache # additional settings default_run_options[:pty] = true # Forgo errors when deploying from windows ssh_options[:forward_agent] = true #ssh_options[:keys] = %w(/home/user/.ssh/id_rsa) # If you are using ssh_keysset :chmod755, "app config db lib public vendor script script/* public/disp*"set :use_sudo, false # runtime dependencies depend :remote, :gem, "bundler", ">=1.0.0.rc.2" # tasks namespace :deploy do task :start, :roles => :app do run "touch #{current_path}/tmp/restart.txt" end task :stop, :roles => :app do # Do nothing. end desc "Restart Application" task :restart, :roles => :app do run "touch #{current_path}/tmp/restart.txt" end desc "Symlink shared resources on each release" task :symlink_shared, :roles => :app do #run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" end end after 'deploy:update_code', 'deploy:symlink_shared' namespace :bundler do desc "Symlink bundled gems on each release" task :symlink_bundled_gems, :roles => :app do run "mkdir -p #{shared_path}/bundled_gems" run "ln -nfs #{shared_path}/bundled_gems #{release_path}/vendor/bundle" end desc "Install for production" task :install, :roles => :app do run "cd #{release_path} && bundle install --without development test" end end after 'deploy:update_code', 'bundler:symlink_bundled_gems' after 'deploy:update_code', 'bundler:install' 

2 años después, mismo problema …

Aquí está mi solución. En tu deploy.rb:

 # Default value for linked_dirs is [] # set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') set :linked_dirs, fetch(:linked_dirs, []).push('public/system') 

Esto almacenará sus imágenes en yourapp / shared / system (en lugar de yourapp / current / system) y creará enlaces simbólicos en cada implementación.

Fuente: https://github.com/capistrano/rails/issues/104#issuecomment-72766586

Lo más probable es que su public/images (o donde sea que Paperclip almacene imágenes) no sea un enlace simbólico compartido, y así, cuando Capistrano enlaza un nuevo lanzamiento, las imágenes no se copian.

Hay documentación sobre este derecho en el archivo README de Paperclip , que cubre cómo no caer en esta trampa.