Module: DohApp
- Defined in:
- lib/doh/app/home.rb,
lib/doh/app/init.rb,
lib/doh/app/config.rb,
lib/doh/app/options.rb,
lib/doh/app/init_runnable.rb,
lib/doh/app/init_unit_test.rb,
lib/doh/app/activate_logger.rb,
lib/doh/app/activate_database.rb
Defined Under Namespace
Classes: Options
Class Method Summary collapse
- .activate_database ⇒ Object
- .activate_logger ⇒ Object
- .config ⇒ Object
- .enable_notifies ⇒ Object
- .enable_socket_acceptor(port = DohLogger::SocketAcceptor::default_port) ⇒ Object
- .find_home(dir, max_tries = 20) ⇒ Object
- .get_required_config_value(value, desc) ⇒ Object
- .home ⇒ Object
- .init(file_or_directory) ⇒ Object
- .init_runnable(file_or_directory, block = nil) ⇒ Object
- .init_runnable_dir(file_or_directory, &block) ⇒ Object
- .init_runnable_prog(&block) ⇒ Object
- .init_runnable_pwd(&block) ⇒ Object
- .init_unit_test(file_or_directory) ⇒ Object
- .load_config_file(name) ⇒ Object
- .translate_logger_level(str) ⇒ Object
- .use_default_runnable_development_config ⇒ Object
- .use_default_runnable_production_config ⇒ Object
- .use_default_unit_test_development_config ⇒ Object
- .use_default_unit_test_production_config ⇒ Object
Class Method Details
.activate_database ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/doh/app/activate_database.rb', line 5 def self.activate_database root_cfg = DohApp::config return unless root_cfg.fetch('enable_database', true) return unless root_cfg.key?('database') begin require 'mysql' rescue LoadError => e return end db_cfg = root_cfg['database'] require 'doh/mysql' require 'doh/mysql/require_dbtypes' conn = DohDb::CacheConnector.new(db_cfg['host'], db_cfg['username'], db_cfg['password'], db_cfg['database'] || root_cfg['primary_database']) conn.port = db_cfg['port'] conn.timeout = db_cfg['timeout'].to_i if db_cfg['timeout'] conn.row_builder = db_cfg['row_builder'] || root_cfg['row_builder'] DohDb::set_connector_instance(conn) DohDb::require_dbtypes end |
.activate_logger ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/doh/app/activate_logger.rb', line 16 def self.activate_logger root_cfg = DohApp::config return unless root_cfg.fetch('enable_logger', true) return unless root_cfg.key?('logger') logger_cfg = root_cfg['logger'] require 'doh/logger_configure' scheduler = DohLogger::DirectScheduler.new intrfc = DohLogger::StandardInterface.new(scheduler) Doh::set_logger_interface(intrfc) # initialize logfile_name here, so it can be used later in the email acceptors below logfile_name = 'none' if logger_cfg['enable_file_acceptor'] acceptor_cfg = logger_cfg['file_acceptor'] logfile_name = acceptor_cfg['filename'] if !logfile_name.nil? # don't set it elsif acceptor_cfg.fetch('unique_filename', false) logfile_name = File.basename($PROGRAM_NAME, '.rb') + ".#{Process.pid}" + '.log' else logfile_name = File.basename($PROGRAM_NAME, '.rb') + '.log' end logfile_name = File.join(acceptor_cfg['log_directory'], logfile_name) if acceptor_cfg['log_directory'] logfile = File.new(logfile_name, "w+") logfile.sync = true if acceptor_cfg.fetch('flush', false) file_acceptor = DohLogger::IOStreamAcceptor.new(logfile) file_acceptor.flush_always if acceptor_cfg.fetch('flush', false) Doh::log.add_acceptor(translate_logger_level(acceptor_cfg.fetch('severity', 'debug')), file_acceptor, nil, acceptor_cfg['locations_to_exclude'], acceptor_cfg['include_only_locations']) end if logger_cfg['enable_socket_acceptor'] acceptor_cfg = logger_cfg['socket_acceptor'] socket_acceptor = DohLogger::SocketAcceptor.new(acceptor_cfg.fetch('ip_addr', '127.0.0.1'), acceptor_cfg.fetch('port', DohLogger::SocketAcceptor::default_port)) Doh::log.add_acceptor(translate_logger_level(acceptor_cfg.fetch('severity', 'debug')), socket_acceptor, nil, acceptor_cfg['locations_to_exclude'], acceptor_cfg['include_only_locations']) end if logger_cfg['enable_stdout_acceptor'] acceptor_cfg = logger_cfg['stdout_acceptor'] locations_to_exclude = acceptor_cfg.key?('locations_to_exclude') ? acceptor_cfg['locations_to_exclude'] : ['DohDb'] Doh::log.add_acceptor(translate_logger_level(acceptor_cfg.fetch('severity', 'debug')), DohLogger::IOStreamAcceptor.new, nil, locations_to_exclude, acceptor_cfg['include_only_locations']) end if logger_cfg['enable_notify_acceptor'] acceptor_cfg = logger_cfg['notify_acceptor'] require 'doh/logger/email_acceptor' mail_server = root_cfg['mail_server'] || 'mail.' + get_required_config_value('domain_name', 'mail_server or domain_name required for mail server') from_address = root_cfg['smtp_from'] || acceptor_cfg['from_address'] || 'notify@' + get_required_config_value('domain_name', 'from_address or domain_name required for notification email address') to_address_list = acceptor_cfg['to_address_list'] || ['root@localhost'] notify_acceptor = DohLogger::EmailAcceptor.new(mail_server, root_cfg['smtp_port'], from_address, to_address_list, logfile_name, nil, DohLogger::exceptionless_email_format) Doh::log.add_acceptor(DohLogger::NOTIFY, notify_acceptor, true, acceptor_cfg['locations_to_exclude'], acceptor_cfg['include_only_locations']) end if logger_cfg['enable_error_acceptor'] acceptor_cfg = logger_cfg['error_acceptor'] require 'doh/logger/email_acceptor' mail_server = root_cfg['mail_server'] || 'mail.' + get_required_config_value('domain_name', 'mail_server or domain_name required for mail server') from_address = root_cfg['smtp_from'] || acceptor_cfg['from_address'] || 'error@' + get_required_config_value('domain_name', 'from_address or domain_name required for notification email address') to_address_list = acceptor_cfg['to_address_list'] || ['root@localhost'] error_acceptor = DohLogger::EmailAcceptor.new(mail_server, root_cfg['smtp_port'], from_address, to_address_list, logfile_name) Doh::log.add_acceptor(DohLogger::ERROR, error_acceptor, nil, acceptor_cfg['locations_to_exclude'], acceptor_cfg['include_only_locations']) end end |
.config ⇒ Object
13 14 15 |
# File 'lib/doh/app/config.rb', line 13 def self.config @@config end |
.enable_notifies ⇒ Object
22 23 24 25 26 |
# File 'lib/doh/app/config.rb', line 22 def self.enable_notifies logger_cfg = @@config['logger'] logger_cfg['enable_notify_acceptor'] = true logger_cfg['enable_error_acceptor'] = true end |
.enable_socket_acceptor(port = DohLogger::SocketAcceptor::default_port) ⇒ Object
28 29 30 31 32 |
# File 'lib/doh/app/config.rb', line 28 def self.enable_socket_acceptor(port = DohLogger::SocketAcceptor::default_port) logger_cfg = @@config['logger'] logger_cfg['enable_socket_acceptor'] = true logger_cfg['socket_acceptor']['port'] = port end |
.find_home(dir, max_tries = 20) ⇒ Object
10 11 12 |
# File 'lib/doh/app/home.rb', line 10 def self.find_home(dir, max_tries = 20) @@home = Doh::find_file_in_parents(dir, 'dohapp_home', max_tries = 20) end |
.get_required_config_value(value, desc) ⇒ Object
17 18 19 20 |
# File 'lib/doh/app/config.rb', line 17 def self.get_required_config_value(value, desc) raise "Attempt to get configuration value: #{value.inspect}, but none exists. #{desc}" if !config.key?(value) config[value] end |
.home ⇒ Object
5 6 7 8 |
# File 'lib/doh/app/home.rb', line 5 def self.home raise "must call DohApp::find_home before calling DohApp::home" if @@home.nil? @@home end |
.init(file_or_directory) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/doh/app/init.rb', line 7 def self.init(file_or_directory) @@config = {} if File.directory?(file_or_directory) find_home(file_or_directory) else find_home(File.dirname(file_or_directory)) end $LOAD_PATH.push(File.join(DohApp::home, 'lib')) $LOAD_PATH.push(DohApp::home) require 'doh' DohApp::load_config_file('system') DohApp::load_config_file('development_environment') unless DohApp::load_config_file('active_environment') end |
.init_runnable(file_or_directory, block = nil) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/doh/app/init_runnable.rb', line 60 def self.init_runnable(file_or_directory, block = nil) DohApp::init(file_or_directory) unless DohApp::load_config_file('active_runnable') unless DohApp::load_config_file('development_runnable') DohApp::use_default_runnable_development_config end end block.call(DohApp::config) if block DohApp::activate_logger DohApp::activate_database end |
.init_runnable_dir(file_or_directory, &block) ⇒ Object
72 73 74 |
# File 'lib/doh/app/init_runnable.rb', line 72 def self.init_runnable_dir(file_or_directory, &block) DohApp::init_runnable(file_or_directory, block) end |
.init_runnable_prog(&block) ⇒ Object
76 77 78 |
# File 'lib/doh/app/init_runnable.rb', line 76 def self.init_runnable_prog(&block) DohApp::init_runnable($PROGRAM_NAME, block) end |
.init_runnable_pwd(&block) ⇒ Object
80 81 82 |
# File 'lib/doh/app/init_runnable.rb', line 80 def self.init_runnable_pwd(&block) init_runnable(Dir.pwd, block) end |
.init_unit_test(file_or_directory) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/doh/app/init_unit_test.rb', line 16 def self.init_unit_test(file_or_directory) DohApp::init(file_or_directory) unless DohApp::load_config_file('active_unit_test') unless DohApp::load_config_file('development_unit_test') DohApp::use_default_unit_test_development_config end end DohApp::config['testing'] = true end |
.load_config_file(name) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/doh/app/config.rb', line 6 def self.load_config_file(name) path = File.join(DohApp::home, 'config', name) + '.rb' return false unless File.exist?(path) require(path) true end |
.translate_logger_level(str) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/doh/app/activate_logger.rb', line 7 def self.translate_logger_level(str) return DohLogger::DEBUG if str == 'debug' || str.empty? return DohLogger::INFO if str == 'info' return DohLogger::WARN if str == 'warn' return DohLogger::NOTIFY if str == 'notify' return DohLogger::ERROR if str == 'error' return DohLogger::FATAL if str == 'fatal' end |
.use_default_runnable_development_config ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/doh/app/init_runnable.rb', line 33 def self.use_default_runnable_development_config root_cfg = DohApp::config logger_cfg = {} logger_cfg['file_acceptor'] = {'unique_filename' => false, 'flush' => true, 'severity' => 'debug'} logger_cfg['enable_file_acceptor'] = true email_acceptor_cfg = {'to_address_list' => ['root@localhost']} logger_cfg['notify_acceptor'] = email_acceptor_cfg logger_cfg['error_acceptor'] = email_acceptor_cfg.dup logger_cfg['enable_notify_acceptor'] = false logger_cfg['enable_error_acceptor'] = false logger_cfg['stdout_acceptor'] = {'severity' => 'debug'} logger_cfg['enable_stdout_acceptor'] = true logger_cfg['socket_acceptor'] = {'severity' => 'debug'} logger_cfg['enable_socket_acceptor'] = false root_cfg['logger'] = logger_cfg root_cfg['enable_logger'] = true root_cfg['host_files_directory'] = '~/.dohruby' root_cfg['mail_server'] = 'localhost' root_cfg['database'] = {'username' => 'root', 'host' => 'localhost'} root_cfg['environment'] = 'development' Doh::set_source_ip('127.0.0.1') end |
.use_default_runnable_production_config ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/doh/app/init_runnable.rb', line 7 def self.use_default_runnable_production_config root_cfg = DohApp::config logger_cfg = {} logger_cfg['file_acceptor'] = {'unique_filename' => true, 'flush' => false, 'severity' => 'debug'} logger_cfg['enable_file_acceptor'] = true email_acceptor_cfg = {'to_address_list' => ["notify@#{DohApp::config['domain_name']}"]} logger_cfg['notify_acceptor'] = email_acceptor_cfg logger_cfg['error_acceptor'] = email_acceptor_cfg.dup logger_cfg['enable_notify_acceptor'] = true logger_cfg['enable_error_acceptor'] = true logger_cfg['stdout_acceptor'] = {'severity' => 'debug'} logger_cfg['enable_stdout_acceptor'] = false logger_cfg['socket_acceptor'] = {'severity' => 'info'} logger_cfg['enable_socket_acceptor'] = false root_cfg['logger'] = logger_cfg root_cfg['enable_logger'] = true root_cfg['host_files_directory'] = '/etc' root_cfg['environment'] = 'production' require 'doh/util/internal_ip' Doh::set_source_ip(Doh::internal_ip) end |
.use_default_unit_test_development_config ⇒ Object
5 6 7 8 9 |
# File 'lib/doh/app/init_unit_test.rb', line 5 def self.use_default_unit_test_development_config DohApp::config['database'] = {'username' => 'root', 'host' => 'localhost'} DohApp::config['include_production_tests'] = false DohApp::config['environment'] = 'development' end |