2012-10-24 16 views
11

Właśnie przełączyłem wtyczkę z prowadnicami spinek na paperclip gem. Projekt jest aplikacją rails 2.3 i używam spinacza 2.7.2.Nie znaleziono pliku Paperclip

otrzymuję następujący błąd dziwne:

identify: unable to open image `file': No such file or directory @ error/blob.c/OpenBlob/2617. 
identify: no decode delegate for this image format `file' @ error/constitute.c/ReadImage/544. 

Wygląda spinacza szuka pliku o nazwie „plik”, ale nie jestem pewien dlaczego. Nie zmieniłem żadnego kodu, który mieliśmy wcześniej. Kiedyś działało, wszystko co zrobiłem to uaktualnienie do nowszej wersji i użycie klejnotu nad wtyczką.

Wszelkie pomysły?

Aktualizacja

to być błąd w spinacz, gdzie nie analizuje treść polecenia poprawnie. I wykopali w głąb źródła spinacz znaleźć: Komenda

def run(cmd, arguments = "", local_options = {}) 
    if options[:image_magick_path] 
    Paperclip.log("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead") 
    end 
    command_path = options[:command_path] || options[:image_magick_path] 
    Cocaine::CommandLine.path = [Cocaine::CommandLine.path, command_path].flatten.compact.uniq 
    local_options = local_options.merge(:logger => logger) if logging? && (options[:log_command] || local_options[:log_command]) 

    Cocaine::CommandLine.new(cmd, arguments, local_options).run 
end 

i

# 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(Paperclip::NotIdentifiedByImageMagickError.new("Cannot find the geometry of a file with a blank name")) if file_path.blank? 
    geometry = begin 
       Paperclip.run("identify", "-format %wx%h :file", :file => "#{file_path}[0]") 
      rescue Cocaine::ExitStatusError 
       "" 
      rescue Cocaine::CommandNotFoundError => e 
       raise Paperclip::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.") 
      end 
    parse(geometry) || 
    raise(NotIdentifiedByImageMagickError.new("#{file_path} is not recognized by the 'identify' command.")) 
end 

Paperclip.run nie do zastąpienia: Plik zastępczy dla jakiegoś powodu. I to zweryfikować, uruchamiając następujące w wierszu poleceń:

identify :file 

Monkey łatanie zastąpienie przez plonów ręcznych innych błędów, gdzie coś podobnego dzieje.

Odpowiedz

23

Ok udało mi się go rozwiązać.

To był problem z kokainą. Wydaje się, że spinacz jest zależny od kokainy, która mówi tylko, że musi być Cociane> 0,02. Najnowsza wersja kokainy 0.4.2 (w momencie pisania tego tekstu) ma nowy interfejs API, który nie jest kompatybilny wstecz. Musisz obniżyć do kokainy 0.3.2.

Wystarczy umieścić to w swoim Gemfile przed spinacza:

gem "cocaine", "0.3.2" 
+2

mężczyzna, został zapisany dzień dla mnie :) – emilsw

+7

Zamiast określania kokainę w gemfile można wpadać wersję spinacza do 2.7.4 naprawić to też. – Peter

+0

wspaniały koleś ,! :) – user566245

Powiązane problemy