2013-10-28 36 views
0

我有一組我想要應用於所有版本的轉換。我查看了minimagick的resize_and_pad方法的源代碼,並且它看起來像yields to a block(如果給出的話)。在調用'process'時如何獲得該塊的方法?Carrierwave - 如何將塊傳遞給resize_and_pad

do_everything_else = proc { |img| 
    img.format('jpg') do |i| 
     i.quality 100 
     i.antialias 
     i.background :white 
     i.flatten 
     i.unsharp '0.3x0.3+5+0' 
    end 
} 
version :croppable, :if => :new_upload? do 
    # This results in 'too many arguments' error... 
    process :resize_and_pad => [1200, 1200, 'white', 'Center', do_everything_else] 
end 

回答

1

答案是:process :resize_and_pad => [1200, 1200, 'white'] { |img| do_everything_else.call img }

不知道爲什麼我不能只用process :resize_and_pad => [1200, 1200, 'white'] do_everything_else

編輯:取消,沒有任何反應!該塊甚至沒有運行......我在那裏放了一個直接塊,並且放入了「提升」WTF'.inspect「並且沒有彈出錯誤。我不知道是否有辦法做到這一點......看起來minimagick的方法中的yield(img)是沒用的,因爲根本無法通過使用'process'將方法傳遞給方法。