어젯밤에 app 및 db (mongodb) 서버가 재부팅되었습니다. 파일이 아직 존재하더라도 모든 캐리어 웨이브 탑재 업 로더는 아바타의 기본 이미지를 반환합니다.재부팅 후 Carrierwave 재설정
Rackspace CDN에서 안개 저장 장치를 사용하고 있습니다. 각 사용자 모델의 필드는 avatar_filename
입니다. 나는 user.avatar.recreate_versions!
을 실행하려고했으나 그 때문에 오류가 발생했습니다.
내 이미지를 복원 할 수있는 방법이 있습니까 (여전히 존재합니다!). 다시 발생하지 않도록 할 수 있습니까? 나는 주변을 수색했으나 이것이 일반적인 무도회처럼 보이지 않는다. 내 사용자 모델에서
:
는# Avatar
mount_uploader :avatar, AvatarUploader
AvatarUploader는 :
class AvatarUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
def default_url
"/assets/users/profile-default_#{version_name}.png"
end
# Large
version :large do
resize_to_limit(600, 600)
end
# Small
version :small do
process :crop
resize_to_fill(140, 140)
end
# Thumbnail
version :thumb, :from_version => :small do
resize_to_fill(35, 35)
end
def extension_white_list
%w(jpg jpeg png)
end
def filename
if @filename_created
@filename_created
elsif original_filename
@name ||= Digest::MD5.hexdigest(File.dirname(current_path))
@filename_created = "a_#{timestamp}_#{@name}.#{file.extension}"
@filename_created
end
end
def timestamp
var = :"@#{mounted_as}_timestamp"
model.instance_variable_get(var) or model.instance_variable_set(var, Time.now.to_i)
end
def crop
if model.crop_x.present?
resize_to_limit(600, 600)
manipulate! do |img|
x = model.crop_x.to_i
y = model.crop_y.to_i
w = model.crop_w.to_i
h = model.crop_h.to_i
img.crop!(x, y, w, h)
end
end
end
end
중요한 것부터 먼저. 모델에 : avatar_filename 필드가있는 경우 : avatar 필드에서 mount_uploader를 호출하는 이유는 무엇입니까? 두 번째 - Uploader에서 파일 이름을 두 번 정의하고 있습니다 - default_url 및 파일 이름 방식. 필요한 이유를 이해할 수 없으며 문제의 일부일 수도 있습니다. – Almaron
@Almaron''avatar_filename''은 업 로더를 마운트 한 결과 carrierwave/carrierwave_mongoid에 의해 생성되었습니다. 기본 URL은 아직 업로드하지 않은 사용자에게 빈 아바타를 제공하는 것입니다. –