2012-06-03 4 views
1

업 로더에 정의 된 각 version에 대해 알고 있듯이 CarrierWave는 원본 파일을 캐시에서 tmp 경로로 복사하고이 tmp 파일을이 버전에 대해 정의 된 모든 처리로 넘깁니다. 그런 다음 모든 파일을 저장할 수 있습니다. 경우에 따라 (예 : 동영상 파일의 미리보기 이미지를 생성 할 때)이 복사는 엄청나게 비쌀 수 있습니다. CarrierWave를 복사하지 않고 캐시에있는 동안 원본 파일에서 버전을 생성하도록 할 수 있습니까?CarrierWave가 버전 용 원본 파일을 복사하지 않도록하십시오

편집 나는 거짓 사실 (곧 죄송 잊지 내 자신의 머리를) 반환 move_to_cachemove_to_store 있습니다. 그리고 CarrierWave::RMagick의 라인에서 테스트 처리 모듈 썼다 :

module CarrierWave 
    module Thumbnailer 
    def generate_thumbnails 
     debugger 
     x = 1 
    end 
    end 
end 

을 내가 가지고있는 업 로더 내부의 다음 줄

version :thumb do 
    process :generate_thumbnails 
end 

그러나 실행은 (내가 시작할 수있는 그 년대 debugger에서 중지 될 때 처리) CarrierWave는 이미 업로드 된 파일을 복사하고 이름을 변경했습니다. 두 가지 모두 캐시 디렉토리에서 볼 수 있습니다. README 파일에서

답변

2

체크 아웃 Large Files에서 리드 미 ... :

class MyUploader < CarrierWave::Uploader::Base 
    def move_to_cache 
    true 
    end 
    def move_to_store 
    true 
    end 
end 

가 move_to_cache 및/또는 move_to_store 방법이 true를 반환, 파일 는 캐시에 (대신 복사의) 이동합니다 저장합니다.

+0

나는 false로 설정했습니다. 그러나 이것은 업로드 된 파일이 웹 서버에서 CarrierWave 캐시로 저장되고 저장되는 방식에 영향을 미칩니다. 그것은 버전과 아무 관련이 없습니다. 권리? –

+0

"lib/carrierwave/processing/rmagick.rb"행에 따라 사용자 정의 처리 모듈을 작성해야합니다. –

+0

move_to_cache 및 move_to_store가 true를 반환합니다. Readme에 제안 된대로 여기에 게시하는 동안 오류가 발생했습니다. 죄송합니다 –

관련 문제