Arquivo de clipe de papel não encontrado erro
Eu apenas mudei de um plugin de trilhos de clipe de papel para uma jóia de clipe de papel. O projeto é uma aplicação 2.3 rails e estou usando paperclip 2.7.2 gem.
Estou recebendo o seguinte erro estranho:
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.
Parece que o clipe de papel está procurando por um arquivo chamado 'arquivo', mas não sei por quê. Eu não mudei nenhum dos códigos que tínhamos antes. Ele costumava trabalhar, tudo que fiz foi atualizar para uma versão mais recente e usar uma gem sobre um plugin.
Alguma ideia?
Atualizar
É um bug no clipe de papel onde ele não analisa o conteúdo do comando corretamente. Eu cavei fundo na fonte do clipe para encontrar:
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
e
# 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
O comando Paperclip.run falha ao substituir o espaço reservado: arquivo por algum motivo. Eu verifiquei isso executando o seguinte na linha de comando:
identify :file
Monkey patching a substituição à mão produz outros erros onde acontece uma coisa semelhante.