2012-10-07 1 views
0

Spree 샘플 데이터를 실행할 때 오류가 발생합니다. Spree가 제품 데이터, 특히 제품 이미지를로드하려고 할 때 발생합니다. 다음과 같은 오류가 발생합니다.Spree 샘플 이미지를 처리하는 중 오류 - paperclip geometry.rb의 identify 명령으로 인식 할 수없는 파일 : 29

* Execute db:load_file 
loading ruby <GEM DIR>/sample/lib/tasks/../../db/sample/spree/products.rb 
-- Processing image: ror_tote.jpeg 
rake aborted! 
/var/folders/91/63kgbtds2czgp0skw3f8190r0000gn/T/ror_tote.jpeg20121007-21549-2rktq1 is not recognized by the 'identify' command. 
<GEM DIR>/paperclip-2.7.1/lib/paperclip/geometry.rb:31:in `from_file' 
<GEM DIR>/spree/core/app/models/spree/image.rb:35:in `find_dimensions' 

ImageMagick이 올바르게 설치되었는지는 이전에 문제가 있었던 것과 마찬가지입니다. 다음은 identify 명령을 직접 실행할 때 얻는 결과입니다.

$ identify 
Version: ImageMagick 6.7.7-6 2012-10-06 Q16 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC 
Features: OpenCL 
... other usage info omitted ... 

또한 pry-debugger에서 pry를 사용하고 Paperclip 내부에 geometry.rb에 중단 점을 넣었습니다.

file_path => "/var/folders/91/63kgbtds2czgp0skw3f8190r0000gn/T/ror_tote.jpeg20121007-22732-1ctl1g1" 

나는 또한 이중 확인했습니다

# Uses ImageMagick to determing the dimensions of a file, passed in as either a 
# File or path. 
# NOTE: (race cond) Do not reassign the 'file' variable inside this method as it is likely to be 
# a Tempfile object, which would be eligible for file deletion when no longer referenced. 
def self.from_file file 
    file_path = file.respond_to?(:path) ? file.path : file 
    raise(Errors::NotIdentifiedByImageMagickError.new("Cannot find the geometry of a file with a blank name")) if file_path.blank? 
    geometry = begin 
       silence_stream(STDERR) do 
       binding.pry 
       Paperclip.run("identify", "-format %wx%h :file", :file => "#{file_path}[0]") 
       end 
      rescue Cocaine::ExitStatusError 
       "" 
      rescue Cocaine::CommandNotFoundError => e 
       raise Errors::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.") 
      end 
    parse(geometry) || 
    raise(Errors::NotIdentifiedByImageMagickError.new("#{file_path} is not recognized by the 'identify' command.")) 
end 

내 binding.pry 문의 시점에서, FILE_PATH 변수가 다음을 설정한다 : 여기 geometry.rb의 섹션이 생겼는지 이 디렉토리에 내 파인더를 열어 미리보기 앱으로 열었습니다. 또한 프로그램이 %x{identify}을 실행하여 식별 할 수 있으며 이전과 동일한 버전 Version: ImageMagick 6.7.7-6 2012-10-06 Q16을 수신합니다. 나는 또한이 업데이트를 수동으로 시도했습니다

Cocaine::ExitStatusError: Command 'identify -format %wx%h :file' returned 1. Expected 0 

:

파일 확장자 후 추가 숫자를 (?이 시간 소인입니다) 제거 및 올립니다에서 수동으로 Paperclip.run 명령을 실행하는 것은 나에게 다른 오류를 제공합니다 Spree에서 3.0.2까지의 종이 클립 보석과 같은 오류가 발생합니다. 그래서, 나는 그 밖에 무엇을 시도해야하는지 잘 모르겠습니다. ImageMagick 설정에 문제가 있습니까?

답변

3

앞서 언급 한 바와 같이 새로운 코카인 보석은 사용 된 API를 변경하여 기존의 Paperclip 보석을 깨뜨린 것입니다. 필자는 명시 적으로 코카인 버전 0.3.2를 내 Gemfile에 요구함으로써이 문제를 해결했지만,이 질문을 게시 한 이후에도 Spree 마스터 브랜치에이 요구 사항이 추가되어 더 이상 필요하지 않게되었습니다.

gem 'cocaine', '0.3.2'