Carrierwave 上传的图像在 Capistrano 部署后不持久
Carrierwave uploaded Images aren't persistent after Capistrano deploy
我刚刚注意到,在我将我的 rails 应用程序重新部署到生产环境后,使用 cap deploy:migrations
我通过管理表单上传的任何图像(例如使用头像图像创建推荐信) ) 图像链接现在已损坏。只要我不重新部署任何代码,图像就可以正常显示,这是不需要的,因为我推送代码更改非常频繁。我假设这与 capistrano 在 'releases' 中为每个部署创建文件结构的方式有关,但我不确定如何解决这个问题。
我也没有使用 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
好像你没有在你的 deploy.rb 中配置 linked_dirs
变量(在 Capistrano 3 的情况下)或者没有为你的 [=11] 指定 sym-link =] 来自 shared/public/uploads
(在 Capistrano 2 的情况下)。
如果没有它,所有部署都会 "override" public/uploads
目录。
Here 更详细。
默认情况下,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
我刚刚注意到,在我将我的 rails 应用程序重新部署到生产环境后,使用 cap deploy:migrations
我通过管理表单上传的任何图像(例如使用头像图像创建推荐信) ) 图像链接现在已损坏。只要我不重新部署任何代码,图像就可以正常显示,这是不需要的,因为我推送代码更改非常频繁。我假设这与 capistrano 在 'releases' 中为每个部署创建文件结构的方式有关,但我不确定如何解决这个问题。
我也没有使用 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
好像你没有在你的 deploy.rb 中配置 linked_dirs
变量(在 Capistrano 3 的情况下)或者没有为你的 [=11] 指定 sym-link =] 来自 shared/public/uploads
(在 Capistrano 2 的情况下)。
如果没有它,所有部署都会 "override" public/uploads
目录。
Here 更详细。
默认情况下,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