我正在尝试使用此解决方案来获取图像的尺寸。在开发中效果很好,但在分期(使用雾)中img = ::Magick::Image::read(@file.file).first
抛出了我:
private method 'file' called for #<CarrierWave::Storage::Fog::File:0x00000008fe28d0>
如何用雾检索文件?
更新:
我carrirwave_backgrounder
用来异步处理图像。这是代码的一部分:
# the uploader
def geometry
@geometry ||= get_geometry
end
def get_geometry
if(@file)
img = ::MiniMagick::Image.open(@file.file)
@geometry = {width: img[:width], height: img[:height]}
end
end
# the model
mount_uploader :image, ImageUploader
process_in_background :image
before_save :set_dimensions
def set_dimensions
geometry = self.image.geometry
self.width = geometry[:width]
self.height = geometry[:height]
end
我发现错误只是在我更新模型时出现,而不是在创建模型时出现,所以我将回调更改为before_create :set_dimensions
并且工作正常。我想这可能是因为当我更新时,文件只是在资产主机中,但这只是一个猜测。