Module: PgQueue
- Defined in:
- lib/pg_queue.rb,
lib/pg_queue/job.rb,
lib/pg_queue/worker.rb,
lib/pg_queue/version.rb,
lib/pg_queue/pg_extensions.rb
Defined Under Namespace
Modules: PgExtensions
Classes: Job, Worker
Constant Summary
collapse
- VERSION =
"0.1.4"
Class Method Summary
collapse
Class Method Details
.connection ⇒ Object
19
20
21
|
# File 'lib/pg_queue.rb', line 19
def self.connection
@connection
end
|
.connection=(object) ⇒ Object
23
24
25
26
27
|
# File 'lib/pg_queue.rb', line 23
def self.connection=(object)
@connection = object.tap do |conn|
conn.extend(PgQueue::PgExtensions) if object.respond_to?(:exec)
end
end
|
.dequeue ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/pg_queue.rb', line 43
def self.dequeue
result = connection.first("SELECT id, class_name, args FROM pg_queue_jobs LIMIT 1")
return nil unless result
PgQueue::Job.new(result).tap do |job|
PgQueue.logger.debug("dequeued #{job.id}")
connection.delete(:pg_queue_jobs, :id => job.id)
end
end
|
.enqueue(klass, *args) ⇒ Object
37
38
39
40
41
|
# File 'lib/pg_queue.rb', line 37
def self.enqueue(klass, *args)
id = connection.insert(:pg_queue_jobs, { :class_name => klass.name, :args => MultiJson.encode(args) }, "id")
logger.debug("enqueued #{id}")
connection.notify(:pg_queue_jobs)
end
|
.interval ⇒ Object
29
30
31
|
# File 'lib/pg_queue.rb', line 29
def self.interval
@interval || 0
end
|
.interval=(seconds) ⇒ Object
33
34
35
|
# File 'lib/pg_queue.rb', line 33
def self.interval=(seconds)
@interval = seconds
end
|
.logger ⇒ Object
11
12
13
|
# File 'lib/pg_queue.rb', line 11
def self.logger
@logger ||= Logger.new(STDOUT)
end
|
.logger=(object) ⇒ Object
15
16
17
|
# File 'lib/pg_queue.rb', line 15
def self.logger=(object)
@logger = object
end
|