Sha256: 6a07a4620a4f40c80abf65f9f9165edb6e2616458e9edb087419c388636cc24e
Contents?: true
Size: 806 Bytes
Versions: 2
Compression:
Stored size: 806 Bytes
Contents
class TbRedirects::DetectRedirectLoopJob < ActiveJob::Base queue_as :default attr_reader :attempts MAX_ATTEMPTS = 100 def initialize(*arguments) super(*arguments) @attempts = 0 end def perform(redirect) parents = TbRedirect.where(:destination => redirect.source) parents.each{ |p| search_parent(p, redirect.destination) } end private class AttemptsExceeded < StandardError end def search_parent(parent, destination_to_check) @attempts += 1 raise AttemptsExceeded, "Exceeded #{MAX_ATTEMPTS} max attempts" if @attempts > MAX_ATTEMPTS if parent.source == destination_to_check parent.destroy else parents = TbRedirect.where(:destination => parent.source) parents.each{ |p| search_parent(p, destination_to_check) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tb_redirects-0.9.0 | app/jobs/tb_redirects/detect_redirect_loop_job.rb |
tb_redirects-0.0.1 | app/jobs/tb_redirects/detect_redirect_loop_job.rb |