未定义的方法操作! - 带有minimagick的载波

时间:2015-09-20 20:53:34

标签: ruby-on-rails carrierwave minimagick

我正在使用带有minimagick的carrierwave上传图像并将其裁剪为正方形。但是我收到以下错误:

undefined method 'manipulate!' for #<Class:0x692db10>

它似乎毫无意义,因为我已经包含了正确的类,并且该部分工作正常。这是我目前的上传者课程。

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  @@sizes = {
    "2000" => 2048,
    "1500" => 1500,
    "1000" => 1024,
    "500" => 512,
    "250" => 256,
    "100" => 128
  }

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :square do
    manipulate! do |img|
      size = img.dimensions.min
    end
    process resize_to_fill: [size, size]
  end
end

很明显,我们正在讨论:square版本。有谁知道可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

似乎manipulate!属于RMagick adapter,对于MiniMagick,您应使用mogrify之类的内容。

确实,有这样的方法,但是你试图在类范围内使用它,而它是一个实例方法。您可以使用bunch of useful class methods

如果您仍然需要manipulate!,请执行以下操作:

process :radial_blur => 10

def radial_blur(amount)
  manipulate! do |img|
    img.radial_blur(amount)
    img = yield(img) if block_given?
    img
  end
end