[英]RoutingError for previous uploaded images after Capistrano deploy
[英]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.