使用carrierwave和雾访问图像实例

时间:2013-05-08 17:28:25

标签: ruby-on-rails-3 carrierwave fog

我正在尝试使用this solution来获取图片的尺寸。在开发中工作得很好,但在使用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并且工作正常。我想这可能是因为当我更新时,文件只是在资产主机中,但这只是猜测。

1 个答案:

答案 0 :(得分:0)

更改file的{​​{1}},所以它将是:

url