Carrierwave上传的图像在Capistrano部署后并不持久

时间:2015-05-28 16:10:58

标签: ruby-on-rails ruby image capistrano rubber

我刚刚注意到,在使用cap deploy:migrations将我的rails应用程序重新部署到制作时,我通过我的管理表单上传了任何图像(例如创建了带有头像图像的推荐)图像链接现已破裂。只要我不重新部署任何代码,图像就会显得很好,这是不可取的,因为我经常推送代码更改。我认为这与capistrano在“发行版”中创建文件结构的方式有关。对于每个部署,但我不确定如何解决此问题。

我也没有使用git跟踪public/uploads,因为我不希望我在localhost上使用的虚假内容出现在制作中。

所以,在我最新的代码推送之前,我已经将所有图像放在那里,因为我刚添加它们。现在,推后没有图像:

broken image links

以下是我认为相关的文件(请告诉我,除了这些文件之外,您还需要了解这些文件):

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

2 个答案:

答案 0 :(得分:4)

默认情况下,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

答案 1 :(得分:0)

好像你没有在deploy.rb中配置linked_dirs变量(如果是Capistrano 3),或者没有从public/uploads指定shared/public/uploads的sym-link (在Capistrano 2的情况下)。

如果没有它,所有部署都将“覆盖”public/uploads目录。

Here是更多详情。