防止公共文件夹中的某些文件夹被删除capistrano rails

时间:2013-10-15 16:15:16

标签: ruby-on-rails deployment capistrano

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

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

使用Capistrano进行部署时,是否可以删除生产服务器上的文件夹和文件?

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

谢谢Stack!

2 个答案:

答案 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.