我有一个使用Carrierwave和carrierwave_backgrounder gem的Rails应用程序,用于在backfround作业中处理和存储图像(我使用resque)。
有问题的错误: CarrierWave :: Workers :: StoreAsset NameError:未初始化的常量附件 (请参见下面的错误图片。)
对于这个问题,我真的可以使用一些帮助。我已经在网上搜寻并尝试了所有可以想到的方法,但是我无法解决此问题。
我有一个带有以下代码的附件模型:
class Attachment < ApplicationRecord
include Indestructible
include FileType
belongs_to :attachable, polymorphic: true
mount_uploader :file, FileUploader
store_in_background :file
attr_accessor :width, :height
before_save :direct_upload
def is_image?
extensions = %w(jpg jpeg gif png tiff bmp)
extensions.include? self.extension
end
def extension
self.file.try(:extension).try(:downcase)
end
def belongs_to_foto?
self.attachable_type == "Photo"
end
protected
# Skipping damn carrierwave_backgrounder when .pdf
def direct_upload
self.process_file_upload = true if self.extension == 'pdf'
end
end
我一直在resque日志中收到此问题:
文件最终会在上载/ tmp时保存在本地,但永远不会从此处清除并像使用store_in_background一样保存到s3。奇怪的是,这个错误是随机发生的。它可能在30-50%的时间内运行良好,并保存到s3,但是大多数时候我收到此错误,并且卡在了本地服务器存储中。您可以想象这是一个巨大的问题。我们的应用程序中上传了很多图片。
可能是什么原因造成的?我将非常感谢您的帮助或评论,我们已经解决了这个问题好几个月了。谢谢。