繁体   English   中英

Capistrano部署后,Carrierwave上传的图像不再持久

[英]Carrierwave uploaded Images aren't persistent after Capistrano deploy

我刚刚注意到,在我将我的Rails应用重新部署到具有cap deploy:migrations生产之后, cap deploy:migrations了我通过管理表单上传的任何图像(例如,使用头像图像创建推荐),这些图像链接现在已断开。 只要不重新部署任何代码,图像就可以正常显示,这是不希望的,因为我经常更改代码。 我认为这与capistrano为每个部署在“版本”中创建文件结构的方式有关,但是我不确定如何解决此问题。

我也不用git跟踪public/uploads ,因为我不希望在本地主机上使用的虚假内容出现在生产环境中。

因此,在我进行最新代码推送之前,自从我添加所有图像以来,我就已经拥有了所有图像。 现在,在推送之后没有图像:

损坏的图片链接

以下是我认为相关的文件(让我知道是否需要查看这些文件之外的文件):

avatar_uploader.rb:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  process :resize_to_fit => [200, 200]

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

默认情况下,Capistrano链接public/system目录。 因此,要保留您的图像,只需进行更改

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

def store_dir
  "system/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

似乎您没有在deploy.rb中配置linked_dirs变量(在Capistrano 3的情况下),或者未从shared/public/uploads中指定到public/uploads的符号链接(在Capistrano 2的情况下)。

没有它,所有deploy都将“覆盖” public/uploads目录。

是更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM