PaperClip检查在处理之前存在

时间:2015-06-12 12:20:35

标签: ruby-on-rails ffmpeg paperclip

如果我的音乐被删除,我试图跳过PaperClip进程。

基本上当我上传音乐时,如果出现问题,我想要销毁这个上传文件的每一个部分。此操作被ffmpeg延迟并完成。另一个任务是延迟将附加图片添加到我的音乐中。

不幸的是,当我销毁不良音乐时,PaperClip进程(附上图片)已被推迟。这意味着当流程开始时,源不再存在。 这会阻止我delayed_jobs,我必须手动销毁它。

我使用Delayed_paperclip来创建这些延迟的工作。

如何在处理之前检查源是否存在?

1 个答案:

答案 0 :(得分:0)

您正在处理的问题称为race conditionhttps://en.wikipedia.org/wiki/Race_condition

假设您不喜欢以下内容: @my_instance.delay.method

您可能希望将附加图像的对象的ID传递给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