2015-09-20 4 views
1

Я использую несущую волну с минимагаем, чтобы загрузить изображение и обрезать его на квадрат. Однако я получаю следующее сообщение об ошибке:Неопределенный метод манипулирует! - несущая волна с мини-маркером

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

это, кажется, не имеет смысла, так как я включил правильный класс, и эта часть работает отлично. Heres мой текущий класс загрузчика.

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. Кто-нибудь знает, что может быть неправильным?

ответ

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 
+0

но метод _is_ в 'модуле CarrierWave :: MiniMagic' – topisani

+0

https://github.com/carrierwaveuploader/carrierwave/blob/master /lib/carrierwave/processing/mini_magick.rb#L296 – topisani

Смежные вопросы