2

我刚刚注意到,在使用cap deploy:migrations通过管理表单上传的任何图像(例如使用头像图像创建推荐)将我的 rails 应用程序重新部署到生产环境后,图像链接现在已损坏。只要我不重新部署任何代码,图像看起来就很好,这是不希望的,因为我非常频繁地推送代码更改。我认为这与 capistrano 在“发布”中为每个部署创建文件结构的方式有关,但我不确定如何解决这个问题。

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

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

损坏的图像链接

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

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
4

2 回答 2

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
于 2015-05-28T16:22:24.627 回答
0

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

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

这里有更多细节。

于 2015-05-28T16:14:36.293 回答