2015-06-12 3 views
0

Я пытаюсь пропустить PaperClip процесс, если моя музыка была удалена.PaperClip проверить существование до процесса

В основном, когда я загружаю музыку, я хочу уничтожить каждую отдельную часть этого загруженного файла, если что-то пошло не так. Эта операция задерживается и выполняется ffmpeg. Другая задача откладывается на прикрепленную картинку к моей музыке.

К сожалению, процесс PaperClip (чтобы прикрепить картинку) уже был отложен, когда я разрушаю плохие музыкальные произведения. Это означает, что когда процесс начинается, источник больше не существует. Это блокирует мой delayed_jobs, и я должен уничтожить его вручную.

Я использую Delayed_paperclip, чтобы создать те отложенные задания.

Как проверить, существует ли источник перед обработкой?

ответ

0

вопрос вы имеете дело с называется race condition: https://en.wikipedia.org/wiki/Race_condition

Предполагая, вы donig что-то вроде:@my_instance.delay.method

Вы можете передать идентификатор объекта, который вы прикреплении изображения к это к perform методу

def perform(obj_id) 
    begin 
    MyObj.find(obj_id) 
    rescue 
    # => do your stuff here 
    ensure 
    # => ensure your stuff here 
    end 
end 

Пример: https://github.com/collectiveidea/delayed_job/#custom-jobs

+0

Мне понравилось рано. Он работает для задания, которое я вызываю вручную, но у меня есть некоторые проблемы, чтобы применить его к заданиям, связанным с 'PaperClip'. – BriceB

+0

Это 'delayed_paperclip', который управляет созданием замедленного задания. У вас есть идея подражать методу выполнения? – BriceB

+0

Я пока что пока не полностью проверен, к сожалению. Я все еще ищу, чтобы остановить эту работу, если источник больше не существует. – BriceB