24 lines
834 B
Ruby
24 lines
834 B
Ruby
# frozen_string_literal: true
|
|
|
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
#
|
|
|
|
module Workers
|
|
class GatherOEmbedData < Base
|
|
sidekiq_options queue: :medium
|
|
|
|
def perform(post_id, url, retry_count=1)
|
|
post = Post.find(post_id)
|
|
post.o_embed_cache = OEmbedCache.find_or_create_by(url: url)
|
|
post.save
|
|
rescue ActiveRecord::RecordNotFound
|
|
# User created a post and deleted it right afterwards before we
|
|
# we had a chance to run the job.
|
|
# On the other hand sometimes the job runs before the Post is
|
|
# fully persisted. So we just reduce the amount of retries.
|
|
GatherOEmbedData.perform_in(1.minute, post_id, url, retry_count+1) unless retry_count > 3
|
|
end
|
|
end
|
|
end
|