gpt4 book ai didi

ruby-on-rails - 重启后载波复位

转载 作者:行者123 更新时间:2023-12-02 11:00:43 26 4
gpt4 key购买 nike

应用程序和数据库(mongodb)服务器昨晚均已重新启动。所有 Carrierwave 安装的上传程序都会返回头像的默认图像,即使文件仍然存在。

我在 Rackspace CDN 上使用雾存储。每个用户模型都包含一个 avatar_filename 字段。我尝试运行 user.avatar.recreate_versions! 但是由于 nil 导致错误。

有什么方法可以恢复我的图像(它们仍然存在!)并防止这种情况再次发生?我四处搜寻过,但这看起来不像是一个常见的舞会。

在我的用户模型中:

# Avatar
mount_uploader :avatar, 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

最佳答案

鉴于图像在那里,您可以使用 user.remote_avatar_url = "the url for this avatar"将它们重新上传为远程文件

为了避免将来出现这种情况,您必须记住如何处理文件名。每次执行recreate_versions!时都会重新应用该过程。将此代码放入您的 uploader 中以解决此问题:

class AvatarUploader < CarrierWave::Uploader::Base
def filename
if original_filename
if model && model.read_attribute(:avatar).present?
model.read_attribute(:avatar)
else
# new filename
end
end
end
end

您可以在以下 wiki 文章中找到有关此内容的更多信息:https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Create-random-and-unique-filenames-for-all-versioned-files

关于ruby-on-rails - 重启后载波复位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com