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
50
51
52
53
54
55
|
# File 'lib/daemon_objects/base.rb', line 50
def self.after_fork
force_logger_reset
defined?(NewRelic)
end
|
.app_directory ⇒ Object
20
21
22
|
# File 'lib/daemon_objects/base.rb', line 20
def self.app_directory
@app_directory ||= (defined? Rails) ? Rails.root : Rake.original_dir
end
|
.consumer_class ⇒ Object
28
29
30
|
# File 'lib/daemon_objects/base.rb', line 28
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
17
18
|
# 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.retry_wait_time = opts.delete(:retry_wait_time)
self.worker_class = opts.delete(:worker_class) || DaemonObjects::Amqp::Worker
self.arguments.merge!(opts)
logger.info "Configured to consume queue [#{queue}] at endpoint [#{endpoint}]"
logger.info "Worker class is '#{worker_class}'"
end
|
.get_consumer ⇒ Object
36
37
38
39
40
|
# File 'lib/daemon_objects/base.rb', line 36
def self.get_consumer
consumer_class.new(:logger => logger,
:app_directory => app_directory,
:environment => DaemonObjects.environment)
end
|
.handle_error(e) ⇒ Object
86
87
88
89
90
|
# File 'lib/daemon_objects/base.rb', line 86
def self.handle_error(e)
logger.error(e.message)
logger.error(e.backtrace.join("\n"))
Airbrake.notify(e) if defined?(Airbrake)
end
|
.pid_directory ⇒ Object
24
25
26
|
# File 'lib/daemon_objects/base.rb', line 24
def self.pid_directory
File.join(app_directory, "tmp/pids")
end
|
.proc_name ⇒ Object
32
33
34
|
# File 'lib/daemon_objects/base.rb', line 32
def self.proc_name
@proc_name ||= self.to_s.underscore
end
|
.restart ⇒ Object
81
82
83
84
|
# File 'lib/daemon_objects/base.rb', line 81
def self.restart
start
stop
end
|
.run ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/daemon_objects/base.rb', line 42
def self.run
begin
get_consumer.run
rescue StandardError => e
handle_error(e)
end
end
|
.start ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/daemon_objects/base.rb', line 57
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
handle_error(e)
end
|
.stop ⇒ Object
77
78
79
|
# File 'lib/daemon_objects/base.rb', line 77
def self.stop
Daemons.run_proc(proc_name, { :ARGV => [ "stop", "-f" ], :dir => pid_directory})
end
|