class DaemonObjects::Base
Public Class Methods
after_fork()
click to toggle source
# File lib/daemon_objects/base.rb, line 50 def self.after_fork # daemonizing closes all file handles, so this will reopen the log force_logger_reset # this seems to be enough to initialize NewRelic if it's defined defined?(NewRelic) end
app_directory()
click to toggle source
# File lib/daemon_objects/base.rb, line 20 def self.app_directory @app_directory ||= (defined? Rails) ? Rails.root : Rake.original_dir end
consumer_class()
click to toggle source
# 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={})
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/daemon_objects/base.rb, line 24 def self.pid_directory File.join(app_directory, "tmp/pids") end
proc_name()
click to toggle source
# File lib/daemon_objects/base.rb, line 32 def self.proc_name @proc_name ||= self.to_s.underscore end
restart()
click to toggle source
# File lib/daemon_objects/base.rb, line 81 def self.restart start stop end
run()
click to toggle source
# File lib/daemon_objects/base.rb, line 42 def self.run begin get_consumer.run rescue StandardError => e handle_error(e) end end
start()
click to toggle source
# File lib/daemon_objects/base.rb, line 57 def self.start # connection will get severed on fork, so disconnect first 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()
click to toggle source
# File lib/daemon_objects/base.rb, line 77 def self.stop Daemons.run_proc(proc_name, { :ARGV => [ "stop", "-f" ], :dir => pid_directory}) end