Class: SyncProjectTicketsJob

Inherits:
Object
  • Object
show all
Defined in:
app/jobs/sync_project_tickets_job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project) ⇒ SyncProjectTicketsJob

Returns a new instance of SyncProjectTicketsJob.



3
4
5
# File 'app/jobs/sync_project_tickets_job.rb', line 3

def initialize(project)
  @project = project
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project.



7
8
9
# File 'app/jobs/sync_project_tickets_job.rb', line 7

def project
  @project
end

Instance Method Details

#run!Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/jobs/sync_project_tickets_job.rb', line 9

def run!
  Rails.logger.debug "\e[33;1mStart sync job\e[0m"

  start_time = Time.now
  @project.update_column :ticket_tracker_sync_started_at, start_time

  if @project.ticket_tracker.supports?(:syncing_milestones)
    milestones = project.all_milestones
    project.milestones.without(milestones).update_all(destroyed_at: Time.now)
  end

  if @project.ticket_tracker.supports?(:syncing_tickets)
    tickets = project.all_tickets
    project.tickets.without(tickets).update_all(destroyed_at: Time.now)
  end

  @project.update_column :last_ticket_tracker_sync_at, Time.now
ensure
  @project.update_column :ticket_tracker_sync_started_at, nil

  Rails.logger.debug "\e[33;1mFinish sync job in \e[4m%.2f\e[0;33;1m seconds\e[0m" % (Time.now - start_time)
end