2012-06-12 4 views
0

다음 코드는 파일 시스템에 저장된 기존 이미지에 주어진 문자열을 씁니다. 이미지 조작이 간다면 그리 복잡하지 않습니다. 그러나 MiniMagick을 호출하여 발생하는 오버 헤드가 분명히 있습니다. 또한이 루틴은 매우 자주 호출되므로 최대한 빨리 완료해야합니다.Ruby/Rails에서 가능한 한 멀리까지 MiniMagick 루틴을 실행 하시겠습니까?

이미지를 디스크에 캐싱하는 것 외에 rails/ruby를 사용하여이 코드가 최고 성능으로 실행되는지 확인하는 옵션은 무엇입니까?

variable = "some string" 

mm = MiniMagick::Image.open("#{Rails.root}/app/assets/images/b.png") 
    mm.combine_options do |c| 
    c.gravity 'center' 
    c.pointsize '13' 
    c.draw "text 33,0 '#{variable}'" 
    end 

send_data(mm.to_blob, :type => 'image/png', :disposition => 'inline' 
+0

클라이언트에서 HTTP 호출을 최대한 빨리 보내려고합니까? 아니면이 루틴을 가능한 한 fas로 실행하려고합니까? –

+0

@JesseWolgamott 좋은 질문입니다. 실제로 둘 다, 그러나 초점은 이미지 프로세싱에있었습니다. 그러나 프로토콜 수준에서 조정될 수있는 것이 무엇이든간에 물론 큰 이점이 될 것입니다. :) –

답변

1

백그라운드에서 그것을 어떻게 처리 이미지를위한 표준 방법 - 사용자 업로드 이미지 (가능 S3 직접)하고, 그 서버가 백그라운드에서 미리보기 이미지를 처리한다.

이것은 가능한 한 빨리 앱을 유지합니다. 이것은 resque를 사용하여 백그라운드에서 반송파 업로드를 처리하는 방법입니다. https://github.com/lardawge/carrierwave_backgrounder

그런 다음이 이미지 처리를 단계별로 반송파로 옮기면 좋을 것입니다!

+0

결과가 즉시 표시되어야하므로 불행히도이 프로세스는 요청/응답주기 내에 있어야합니다. 그래서 나는이 질문을하고있다. perf에서 할 수있는 모든 것. 루스크가 Resque로 오프로드 될 수 없다고 가정 할 때 현명합니까? –

+0

아니, 여기에 표준 접근 방식은 배경 (또는 스레드) –

관련 문제