Я нахожусь в процессе обновления старого приложения рельсов и обновляю скрепку. У меня есть пользовательский процессор, который использует Paperclip.run для запуска некоторых инструкций преобразования вручную в моем процессоре. Иногда плохой файл проскальзывает, что imagemagick не нравится, поэтому мы поймаем ошибку и ответим пользователю.Как поймать ошибку Paperclip.run (cmd)
старый путь был следующим (Этот код не получится):
begin
Paperclip.run("convert", cmd)
rescue PaperclipCommandLineError
raise PaperclipError, "There was an error processing the tiles for #{@basename}" if whiny
end
Который используется, чтобы поймать ошибку команды и поднять ошибку проверки. Это больше не работает, потому что больше нет PaperclipCommandLineError.
Рассматривая код, похоже, что Paperclip.run() использует https://github.com/thoughtbot/cocaine для обработки его команд. Глядя на документации кокаина это выглядит, как мы могли бы поймать код завершения и восстановить таким образом что-то вроде:
begin
Cocaine::CommandLine.new("convert", cmd)
rescue Cocaine::ExitStatusError => e
#error handling here
end
Will Paperclip.run() возвращает Кокаин :: ExitStatusError, если есть проблема? Или, поскольку я просто использую Paperclip.run() в качестве оболочки для выполнения моей команды, должен ли я использовать Cocaine :: CommandLine вместо этого? Спасибо за ваше понимание.
Удивительный, именно то, что мне нужно. Спасибо. –
Не беспокойтесь. Рад был помочь. –