2010-07-01 4 views
12

S3 컨테이너의 사진 기하학을 읽고 싶습니다. 내 지역에종이 클립으로 사진 기하학을 S3 버킷에서 읽을 수 있습니까?

그것의,이 작품 : 나는 .. S3에 모든 권고를 내 모델을 전환 할 때

def photo_geometry(style = :original) 
    @geometry ||= {} 
    @geometry[style] ||= Paperclip::Geometry.from_file photo.path(style) 
end 

그러나이하지 않는 것이 작동하려면?

더 큰 이야기는 내가 S3에서 사진을 검색하고, 사용자가자를 수 있도록하고, 여전히 클립으로 지정된 S3로 다시 업로드 할 수있게 해주는 코드를 작성하려고하는 것입니다.

는 편집이 :

이 반환되는 오류입니다 : 당신이 저장 메커니즘으로 S3를 사용하는 경우, 당신은 위의 기하학적 방법을 사용할 수 없습니다

Paperclip::NotIdentifiedByImageMagickError: photos/199/orig/greatReads.png is not recognized by the 'identify' command. 
from /Users/daniellevine/Sites/hq_channel/vendor/gems/thoughtbot-paperclip-2.3.1/lib/paperclip/geometry.rb:24:in `from_file' 
from /Users/daniellevine/Sites/hq_channel/app/models/photo.rb:68:in `photo_geometry' 
from (irb):1 

답변

14

(그것은 지역을 가정 파일). 종이 클립은 Paperclip::Geometry.from_file 현지 임시 파일에 S3 파일에서 변환 할 수 있습니다

def photo_geometry(style = :original) 
    @geometry ||= {} 
    @geometry[style] ||= Paperclip::Geometry.from_file(photo.to_file(style)) 
end 
+2

#to_file 작동 :

여기 내 업데이트 된 코드입니다. 1. 그 이후 버전에서는'Paperclip :: Geometry.from_file (Paperclip.io_adapters.for (photo.styles [style])) '을 사용하십시오. –

+2

@IsaacBetesh 이것은 저에게 적합하지 않습니다. 다음과 같은 오류가 발생합니다 :'Paperclip :: AbstractAdapter # path @ tempfile.path에 위임되었지만 @tempfile은 nil입니다 : Paperclip :: NilAdapter'. 참고로 안개 낀 보석으로 s3을 사용하고 있습니다. – npouillard

+0

안개에 관해 명확하게 말할 수 없으므로 S3를 직접 사용하고 있습니다 (예 : aws-sdk gem). 스택 추적에 몇 가지 단서가 포함되어있을 수 있습니다. –

10

이 클립 3.0에서 제거 S3 지역

def photo_geometry(style = :original) 
    @geometry ||= {} 
    photo_path = (photo.options[:storage] == :s3) ? photo.url(style) : photo.path(style) 
    @geometry[style] ||= Paperclip::Geometry.from_file(photo_path) 
end 
관련 문제