Module: Afterparty::QueueHelpers

Included in:
Queue, Worker
Defined in:
lib/afterparty/queue_helpers.rb

Instance Method Summary collapse

Instance Method Details

#[](namespace) ⇒ Object



12
13
14
# File 'lib/afterparty/queue_helpers.rb', line 12

def [] namespace
  @temp_namespace = namespace
end

#authenticate(username, password) ⇒ Object



91
92
93
94
# File 'lib/afterparty/queue_helpers.rb', line 91

def authenticate username, password
  raise 'Must set queue.config_login to use dashboard' if @login_block.nil?
  @login_block.call(username, password)
end

#clearObject



16
17
18
19
# File 'lib/afterparty/queue_helpers.rb', line 16

def clear
  # redis_call :del
  AfterpartyJob.namespaced(@options[:namespace]).destroy_all
end

#completedObject



49
50
51
# File 'lib/afterparty/queue_helpers.rb', line 49

def completed
  AfterpartyJob.namespaced(@options[:namespace]).completed
end

#completed_with_scoresObject



53
54
55
56
# File 'lib/afterparty/queue_helpers.rb', line 53

def completed_with_scores
  @temp_namespace = "completed"
  hash_from_scores(redis_call(:zrange, -20, -1, withscores: true)).reverse
end

#config_login(&block) ⇒ Object

&block takes a ‘username’ and ‘password’ argument. return true or false



87
88
89
# File 'lib/afterparty/queue_helpers.rb', line 87

def  &block
  @login_block = block
end

#handle_exception(job, exception) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/afterparty/queue_helpers.rb', line 73

def handle_exception(job, exception)
  job.completed = true
  job.completed_at = DateTime.now
  job.has_error = true
  job.error_message = exception.message
  job.error_backtrace = exception.backtrace.join("\n")
  job.save
  logger_message = "Job Error: #{job.inspect}\n#{exception.message}"
  logger_message << "\n#{exception.backtrace.join("\n")}"
  @options[:logger].error logger_message
end

#initialize(options = {}) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/afterparty/queue_helpers.rb', line 4

def initialize options = {}
  @options = options
  @options[:namespace] ||= :default
  @options[:sleep] ||= 10
  @options[:logger] ||= Logger.new($stderr)
  self
end

#jobsObject



21
22
23
# File 'lib/afterparty/queue_helpers.rb', line 21

def jobs
  AfterpartyJob.namespaced(@options[:namespace]).incomplete
end

#jobs_empty?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/afterparty/queue_helpers.rb', line 37

def jobs_empty?
  AfterpartyJob.namespaced(@options[:namespace]).valid.empty?
end

#jobs_with_scoresObject



25
26
27
# File 'lib/afterparty/queue_helpers.rb', line 25

def jobs_with_scores
  hash_from_scores(redis_call(:zrange, 0, -1, {withscores: true}))
end

#last_completedObject



45
46
47
# File 'lib/afterparty/queue_helpers.rb', line 45

def last_completed
  AfterpartyJob.namespaced(@options[:namespace]).completed.first
end

#next_valid_jobObject



33
34
35
# File 'lib/afterparty/queue_helpers.rb', line 33

def next_valid_job
  AfterpartyJob.namespaced(@options[:namespace]).valid.first
end

#run(job) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/afterparty/queue_helpers.rb', line 58

def run(job)
  real_job = job.reify
  if real_job
    job.execute
  else
    job.has_error = true
    job.error_message = "Error marshaling job."
  end
  job.completed = true
  job.completed_at = DateTime.now
  job.save
rescue Exception => exception
  handle_exception job, exception
end

#total_jobs_countObject



41
42
43
# File 'lib/afterparty/queue_helpers.rb', line 41

def total_jobs_count
  AfterpartyJob.namespaced(@options[:namespace]).incomplete.count
end

#valid_jobsObject



29
30
31
# File 'lib/afterparty/queue_helpers.rb', line 29

def valid_jobs
  AfterpartyJob.namespaced(@options[:namespace]).valid
end