图像在部署后被删除

images get erased after deploy

我正在使用 rails 4.2 和 capistrano

通过债权人上传的我的图像被删除了,我认为每次新提交。 我将图像保存到 public/ckeditor_assets/pictures 目录。

我只需要插入这段代码吗

set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/ckeditor_assets/pictures}

这是我现在的 deploy.rb

# config valid only for current version of Capistrano
lock '3.4.0'

set :application, 'my app name'
set :repo_url, 'my git directory'

# Default branch is :master
# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp

# Default deploy_to directory is /var/www/my_app_name
set :deploy_to, '/home/rails/app/myappname'

# Default tmp_dir directory is /var/www/tmp
set :tmp_dir, "/home/rails/app/myappname/shared/tmp"

# Default value for :scm is :git
set :scm, :git

# Default value for :format is :pretty
# set :format, :pretty




# Default value for :log_level is :debug
# set :log_level, :debug

# Default value for :pty is false
set :pty, false

# Default value for :linked_files is []
# set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
set :linked_files, fetch(:linked_files, []).push('config/application.yml')

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

#to save uploaded images
#set :linked_dirs, %w(public/ckeditor_assets/pictures)
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/ckeditor_assets/pictures}

# Default value for default_env is {}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }

# Default value for keep_releases is 5
set :keep_releases, 5

set :default_env, {
  PATH: "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH",
  RBENV_ROOT: '~/.rbenv',
  RBENV_VERSION: File.read('.ruby-version').strip
}

set :sidekiq_role, :app
set :sidekiq_config, -> { File.join(shared_path, 'config', 'sidekiq.yml') }
set :sidekiq_env, 'production'


set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_roles,        ->{ :app }
set :whenever_options,      ->{ {:roles => fetch(:whenever_roles)} }
set :whenever_environment,  ->{ fetch :rails_env, "production" }
set :whenever_variables,    ->{ "environment=#{fetch :whenever_environment}" }
set :whenever_update_flags, ->{ "--update-crontab #{fetch :whenever_identifier} --set #{fetch :whenever_variables}" }
set :whenever_clear_flags,  ->{ "--clear-crontab #{fetch :whenever_identifier}" }

namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      within release_path do
        execute :rake, 'cache:clear'
      end
    end
  end
end

您已经做对了所有事情,但您只是错过了为分片目录创建符号链接。

  task :symlink_config, roles: :app do
     run "ln -nfs /home/rails/app/myappname/shared/tmp #/home/rails/app/myappname/current/tmp"
  end
  after "deploy:finalize_update", "deploy:symlink_config"