1

出于某种原因,每次我从所有用户中删除所有图像时,Capistrano 都会删除我数据库中的所有图像。通常我所做的是必须用 capistrano 删除的相同图像重新填充数据库。我附上了我的 deploy.rb 文件,有人可以给我一些见解。

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'
4

2 回答 2

6

2年后,同样的麻烦...

这是我的解决方法。在您的 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')

这会将您的图像存储在 yourapp/shared/system(而不是 yourapp/current/system)中,并在每次部署时创建符号链接。

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

于 2015-07-16T06:48:58.687 回答
1

您的public/images(或 Paperclip 存储图像的任何地方)很可能不是共享符号链接,因此当 Capistrano 链接新版本时,图像不会被复制。

Paperclip README 文件中有关于此权利的文档,介绍了如何不落入此陷阱。

于 2013-11-06T10:22:48.067 回答