2013-10-28 3 views
0

모든 버전에 적용하려는 전환 수가 있습니다. 내가 minimagick의 resize_and_pad 메서드에 대한 소스를 봤는데 yields to a block 주어진 경우처럼 보입니다. '프로세스'를 호출 할 때 해당 블록을 메소드에 어떻게 가져 옵니까?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'] do_everything_else

편집을 사용할 수없는 이유 process :resize_and_pad => [1200, 1200, 'white'] { |img| do_everything_else.call img }

어떤 생각 : 그 취소는 아무 일도 발생하지 않습니다! 블록도 실행되지 않습니다 ... 나는 거기에 직접 블록을 넣고 또한 "인상 'WTF'inspect"에 넣고 오류가 나타나지 않습니다. 나는 이것을 할 수있는 방법이 있는지 모르겠다 ... minimagick의 메소드의 yield (img)는 'process'를 사용하여 메소드에 블록을 전달할 방법이 없으므로 쓸데없는 것 같다.