Class: Debci::Job

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/debci/job.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.amqp_channelObject



53
54
55
56
57
58
# File 'lib/debci/job.rb', line 53

def self.amqp_channel
  @conn ||= Bunny.new(Debci.config.amqp_server).tap do |conn|
    conn.start
  end
  @channel ||= @conn.create_channel
end

.pendingObject



12
13
14
# File 'lib/debci/job.rb', line 12

def self.pending
  jobs = Debci::Job.where(status: nil)
end

Instance Method Details

#enqueueObject



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/debci/job.rb', line 33

def enqueue
  parameters = ['run-id:%s' % id]
  if self.trigger
    parameters << "trigger:#{trigger}"
  end
  Array(self.pin_packages).each do |pin|
    pkg, suite = pin
    parameters << "pin-packages:#{suite}=#{pkg}"
  end
  self.queue.publish("%s %s %s" % [package, suite, parameters.join(' ')])
end

#prefixObject



16
17
18
19
20
# File 'lib/debci/job.rb', line 16

def prefix
  name = self.package
  name =~ /^((lib)?.)/
  $1
end

#queueObject



45
46
47
48
49
50
51
# File 'lib/debci/job.rb', line 45

def queue
  @queue ||=
    begin
      q = ENV['debci_amqp_queue'] || "debci-#{arch}-#{Debci.config.backend}"
      self.class.amqp_channel.queue(q, durable: true)
    end
end

#timeObject

Returns the amount of time since the date for this status object



23
24
25
26
27
28
29
30
31
# File 'lib/debci/job.rb', line 23

def time
  days = (Time.now - self.created_at)/86400

  if days >= 1 || days <= -1
    "#{days.floor} day(s) ago"
  else
    "#{Time.at(Time.now - self.created_at).gmtime.strftime('%H')} hour(s) ago"
  end
end