Sha256: a4892951db70d271a5bd1f3c5e681681de67b205a39024c3fd4b3a1ddb12bff2

Contents?: true

Size: 959 Bytes

Versions: 10

Compression:

Stored size: 959 Bytes

Contents

class SyncAllTicketsJob

  class QuitAll < RuntimeError; end


  def self.run!
    new.run!
  end

  def run!
    Project \
      .unretired
      .where(Project.arel_table[:ticket_tracker_name].not_in(%w{None Houston}))
      .each(&method(:update_tickets_for_project!))
  rescue QuitAll
  end

  def update_tickets_for_project!(project)
    connection_retry_count ||= 0
    SyncProjectTicketsJob.new(project).run!

  rescue Houston::Adapters::TicketTracker::ConnectionError
    retry if (connection_retry_count += 1) < 3
    connection_error!(project)
  rescue Houston::Adapters::TicketTracker::InvalidQueryError
    query_error!(project)
  ensure
    sleep 2 # give Unfuddle a break
  end


private

  def initialize
    @connection_retry_count = 0
  end

  attr_reader :connection_retry_count

  def connection_error!(project)
    Houston.report_exception $!
    raise QuitAll
  end

  def query_error!(project)
    Houston.report_exception $!
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
houston-core-0.8.0.pre app/jobs/sync_all_tickets_job.rb
houston-core-0.7.0 app/jobs/sync_all_tickets_job.rb
houston-core-0.7.0.beta4 app/jobs/sync_all_tickets_job.rb
houston-core-0.7.0.beta3 app/jobs/sync_all_tickets_job.rb
houston-core-0.7.0.beta2 app/jobs/sync_all_tickets_job.rb
houston-core-0.7.0.beta app/jobs/sync_all_tickets_job.rb
houston-core-0.6.3 app/jobs/sync_all_tickets_job.rb
houston-core-0.6.2 app/jobs/sync_all_tickets_job.rb
houston-core-0.6.1 app/jobs/sync_all_tickets_job.rb
houston-core-0.6.0 app/jobs/sync_all_tickets_job.rb