我有一个用户上传图片的应用程序,它们通过CarrierWave存储到公共文件夹,名为uploads / images /。
我刚注意到,自从我最近部署以来,上传(和图片)文件夹已不再存在。
使用Capistrano进行部署时,是否可以删除生产服务器上的文件夹和文件?
如何告诉它在所有部署中保留相同的public / uploads文件夹?
谢谢Stack!
答案 0 :(得分:7)
我建议创建一个capistrano任务,创建共享文件夹的符号链接。符号链接将作为目录的链接,因此您的所有上传存储/检索代码都将正常工作。
Capistrano任务示例:
before "deploy:restart", :symlink_directories
task :symlink_directories do
run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
end
答案 1 :(得分:2)
我想为那些希望与Capistrano v3.9.1
做同样事情的人更新这个答案在deploy.rb文件中,您可以添加以下内容
set :linked_dirs, %w{public/uploads/}
如上面的答案所示,这个符号链接目录在部署期间发布。
非常适合上传目录,我们不想覆盖内容。
有关可以“设置”的完整变量列表,请参阅capistrano docs here.