6

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

我刚刚注意到,自从我最近部署以来,uploads(和images)文件夹已经不在了。

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

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

谢谢Stack!

2个答案2

重置为默认值
7

我建议创建一个capistrano任务,创建一个指向共享文件夹的符号链接。符号链接将充当到目录的链接,因此所有上传存储/检索代码都将正常工作。

Capistrano任务示例:

在“部署:重新启动”之前,:symlink_directories任务:symlink_directories do运行“ln-nfs#{shared_path}/uploads#{release_path{/public/uploads”结束
4
  • 你能推荐一个很好的演练/例子吗?我是Rails和Capistrano的新手,所以我还在学习。
    – 德凡B
    评论 2013年10月15日16:23
  • 只需将上述任务放在deploy.rb中,并更改路径以适合您的应用程序 评论 2013年10月15日16:24
  • 所以我把这个任务放在了deploy.rb中,然而,当我导航到当前版本的public/uploads文件夹时,它说它无法解析符号链接“uploads”。我的共享文件夹中实际上没有“public/uploads”。我应该手动创建吗?
    – 德凡B
    评论 2013年10月15日18:56
  • 只要放一个上传文件夹,无需公众的共享目录中的目录。您应该手动创建它,但在创建之后,您不需要再次进行创建。 评论 2013年10月15日20:18
4

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

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

集合:linked_dirs,%w{public/uploads/}

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

理想的目录,如上传,我们不想覆盖的内容。

有关可以“设置”的变量的完整列表,请参阅这里是capistrano文档。

  • 你的答案应该包括一些解释以及所需的代码。 评论 2017年9月27日22:45
  • @svgrafov我提供了更好的解释并链接到了源代码。另外请注意,已设置了所需的代码。没有双关语。
    – 大卫A26
    评论 2017年10月2日15:53
  • “还要注意,必需的代码已经设置好了”一定有一些误解,因为我的意思是“你有源代码,为什么不添加一些解释?” 评论 2017年10月2日15:59

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.