6

我有一个用户上传图像的应用程序,它们通过 CarrierWave 存储到名为 uploads/images/ 的文件夹中的公共文件夹中。

我刚刚注意到,自从我最近一次部署以来,上传(和图像)文件夹不再存在。

当我使用 Capistrano 部署时,它会删除生产服务器上的文件夹和文件吗?

我如何告诉它在所有部署中保持相同的 public/uploads 文件夹?

谢谢堆栈!

4

2 回答 2

7

I would recommend making a capistrano task that creates a symlink to the shared folder. The symlink will act as a link to the directory, so all your upload storage/retrieval code will work as normal.

Capistrano task example:

before "deploy:restart", :symlink_directories
task :symlink_directories do
  run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
end
于 2013-10-15T16:22:43.643 回答
4

我想为那些希望对 Capistrano v3.9.1 做同样事情的人更新这个答案

在您的 deploy.rb 文件中,您可以添加以下内容

set :linked_dirs,  %w{public/uploads/}

如上面的答案,这在部署期间将目录符号链接到版本中。

非常适合我们不想覆盖内容的上传目录。

有关您可以“设置”的完整变量列表,请参见capistrano 文档。

于 2017-09-27T22:22:29.183 回答