Class: DaemonObjects::Base
- Inherits:
-
Object
- Object
- DaemonObjects::Base
show all
- Extended by:
- Logging
- Defined in:
- lib/daemon_objects/base.rb
Class Method Summary
collapse
Methods included from Logging
create_logger, force_logger_reset, log_directory, log_filename, logger, logger=
Class Method Details
.after_fork ⇒ Object
38
39
40
41
42
43
|
# File 'lib/daemon_objects/base.rb', line 38
def self.after_fork
force_logger_reset
defined?(NewRelic)
end
|
.consumer_class ⇒ Object
22
23
24
|
# File 'lib/daemon_objects/base.rb', line 22
def self.consumer_class
@consumer_class ||= "#{self.to_s.gsub("Daemon", "")}Consumer".constantize
end
|
.consumes_amqp(opts = {}) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/daemon_objects/base.rb', line 6
def self.consumes_amqp(opts={})
extend DaemonObjects::AmqpSupport
self.endpoint = opts.delete(:endpoint)
self.queue = opts.delete(:queue_name)
self.arguments["x-message-ttl"] = opts.delete(:ttl) if opts[:ttl]
self.prefetch = opts.delete(:prefetch)
self.worker_class = opts.delete(:worker_class) || DaemonObjects::Amqp::Worker
self.arguments.merge!(opts)
logger.info "Configured to consume queue [#{queue}] at endpoint [#{endpoint}]"
end
|
.get_consumer ⇒ Object
30
31
32
|
# File 'lib/daemon_objects/base.rb', line 30
def self.get_consumer
consumer_class.new(logger)
end
|
.pid_directory ⇒ Object
18
19
20
|
# File 'lib/daemon_objects/base.rb', line 18
def self.pid_directory
(defined? Rails) ? File.join(Rails.root, "tmp/pids") : "."
end
|
.proc_name ⇒ Object
26
27
28
|
# File 'lib/daemon_objects/base.rb', line 26
def self.proc_name
@proc_name ||= self.to_s.underscore
end
|
.restart ⇒ Object
71
72
73
74
|
# File 'lib/daemon_objects/base.rb', line 71
def self.restart
start
stop
end
|
.run ⇒ Object
34
35
36
|
# File 'lib/daemon_objects/base.rb', line 34
def self.run
get_consumer.run
end
|
.start ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/daemon_objects/base.rb', line 45
def self.start
ActiveRecord::Base.connection.disconnect! if defined?(ActiveRecord::Base)
FileUtils.mkdir_p(pid_directory)
Daemons.run_proc(proc_name,
{ :ARGV => ["start", "-f"],
:log_dir => "/tmp",
:dir => pid_directory,
:log_output => true}) do
after_fork
run
end
rescue StandardError => e
logger.error(e.message)
logger.error(e.backtrace.join("\n"))
Airbrake.notify(e) if defined?(Airbrake)
end
|
.stop ⇒ Object
67
68
69
|
# File 'lib/daemon_objects/base.rb', line 67
def self.stop
Daemons.run_proc(proc_name, { :ARGV => [ "stop", "-f" ], :dir => pid_directory})
end
|