Module: Periodically
- Defined in:
- lib/periodically/cli.rb,
lib/periodically.rb,
lib/periodically/job.rb,
lib/periodically/debug.rb,
lib/periodically/model.rb,
lib/periodically/redis.rb
Overview
This file handles running Periodically in another process
Defined Under Namespace
Modules: Debug, Model
Classes: CLI, Job, RedisConnection
Constant Summary
collapse
- REDIS_DEFAULTS =
{
namespace: "periodically"
}
- DEFAULT_ERROR_DELAY =
proc { |count| (count ** 4) + 15 + (rand(30)*(count+1)) }
- @@registered =
[]
Class Method Summary
collapse
Class Method Details
._registered_jobs ⇒ Object
32
33
34
|
# File 'lib/periodically.rb', line 32
def self._registered_jobs
@@registered
end
|
.execute_next ⇒ Object
19
20
21
22
23
24
25
26
|
# File 'lib/periodically.rb', line 19
def self.execute_next
job, instance = @@registered.lazy.filter_map do |job|
instance = job.poll_next_instance
[job, instance] if instance
end.first
job.execute_instance(instance) if job && instance
end
|
.logger ⇒ Object
11
12
13
|
# File 'lib/periodically.rb', line 11
def self.logger
Rails.logger end
|
.redis ⇒ Object
40
41
42
43
44
45
|
# File 'lib/periodically.rb', line 40
def self.redis
raise ArgumentError, "requires a block" unless block_given?
redis_pool.with do |conn|
yield conn
end
end
|
.register(klass, method, opts) ⇒ Object
28
29
30
|
# File 'lib/periodically.rb', line 28
def self.register(klass, method, opts)
@@registered.push(Periodically::Job.new(klass, method, opts))
end
|
.start ⇒ Object
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/periodically.rb', line 47
def self.start
require "rufus-scheduler"
scheduler = Rufus::Scheduler.new
Periodically.redis { |conn| conn.ping }
scheduler.interval "10s" do
Periodically.execute_next
end
end
|