dohruby 0.1.27 → 0.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -82,3 +82,5 @@
82
82
  * fixed unit_test_logging invalid require
83
83
  *0.1.27* (May 30th, 2008)
84
84
  * rework DohApp stuff to be simpler and more flexible
85
+ *0.1.28* (May 30th, 2008)
86
+ * add configuration ability to DohApp framework
data/bin/run_tests.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require 'doh/app/init'
2
+ require 'doh/app/init_unit_test'
3
3
 
4
4
  what_to_run = ARGV[0] || '.'
5
5
  if File.directory?(what_to_run)
@@ -7,7 +7,7 @@ if File.directory?(what_to_run)
7
7
  else
8
8
  start_dir = File.dirname(what_to_run)
9
9
  end
10
- DohApp::init(start_dir)
10
+ DohApp::init_unit_test(start_dir)
11
11
 
12
12
  if File.directory?(what_to_run)
13
13
  require 'doh/util/run_tests'
@@ -0,0 +1,26 @@
1
+ require 'doh/app/config'
2
+
3
+ module DohApp
4
+
5
+ def self.activate_database
6
+ root_cfg = DohApp::config
7
+ return unless root_cfg.fetch('enable_database', true)
8
+ return unless root_cfg.key?('database')
9
+ db_cfg = root_cfg['database']
10
+ require 'doh/mysql'
11
+ conn = DohDb::CacheConnector.new(db_cfg['host'], db_cfg['username'], db_cfg['password'], db_cfg['database'] || root_cfg['primary_database'])
12
+ row_builder = db_cfg['row_builder'] || root_cfg['row_builder'] || 'typed'
13
+ if row_builder.is_a?(Class)
14
+ conn.row_builder = row_builder
15
+ elsif row_builder == 'typed'
16
+ require 'doh/mysql/typed_row_builder'
17
+ conn.row_builder = DohDb::TypedRowBuilder
18
+ elsif row_builder == 'raw'
19
+ # that's the default for the CacheConnector, don't need to do anything
20
+ else
21
+ raise "unrecognized database row_builder: #{row_builder.inspect}"
22
+ end
23
+ DohDb::set_connector_instance(conn)
24
+ end
25
+
26
+ end
@@ -0,0 +1,64 @@
1
+ require 'doh/app/config'
2
+ require 'doh/logger/severity'
3
+
4
+ module DohApp
5
+
6
+ def self.translate_logger_level(str)
7
+ return DohLogger::DEBUG if str == 'debug' || str.empty?
8
+ return DohLogger::INFO if str == 'info'
9
+ return DohLogger::WARN if str == 'warn'
10
+ return DohLogger::NOTIFY if str == 'notify'
11
+ return DohLogger::ERROR if str == 'error'
12
+ return DohLogger::FATAL if str == 'fatal'
13
+ end
14
+
15
+ def self.activate_logger
16
+ root_cfg = DohApp::config
17
+ return unless root_cfg.fetch('enable_logger', true)
18
+ return unless root_cfg.key?('logger')
19
+ logger_cfg = root_cfg['logger']
20
+ require 'doh/logger_configure'
21
+
22
+ scheduler = DohLogger::DirectScheduler.new
23
+ intrfc = DohLogger::StandardInterface.new(scheduler)
24
+ Doh::set_logger_interface(intrfc)
25
+
26
+ # initialize logfile_name here, so it can be used later in the email acceptors below
27
+ logfile_name = 'none'
28
+ if acceptor_cfg = logger_cfg['file_acceptor']
29
+ if acceptor_cfg.fetch('unique_filename', false)
30
+ logfile_name = File.basename($PROGRAM_NAME, '.rb') + ".#{Process.pid}" + '.log'
31
+ else
32
+ logfile_name = File.basename($PROGRAM_NAME, '.rb') + '.log'
33
+ end
34
+ logfile = File.new(logfile_name, "w+")
35
+ logfile.sync = true if acceptor_cfg.fetch('flush', false)
36
+ file_acceptor = DohLogger::IOStreamAcceptor.new(logfile)
37
+ file_acceptor.flush_always if acceptor_cfg.fetch('flush', false)
38
+ Doh::log.add_acceptor(translate_logger_level(acceptor_cfg.fetch('severity', 'debug')), file_acceptor)
39
+ end
40
+
41
+ if acceptor_cfg = logger_cfg['stdout_acceptor']
42
+ Doh::log.add_acceptor(translate_logger_level(acceptor_cfg.fetch('severity', 'debug')), DohLogger::IOStreamAcceptor.new)
43
+ end
44
+
45
+ if acceptor_cfg = logger_cfg['notify_acceptor']
46
+ require 'doh/logger/email_acceptor'
47
+ mail_server = root_cfg['mail_server'] || 'mail.' + root_cfg['domain_name']
48
+ from_address = acceptor_cfg['from_address'] || 'notify@' + root_cfg['domain_name']
49
+ to_address_list = acceptor_cfg['to_address_list'] || ['notify@' + root_cfg['domain_name']]
50
+ notify_acceptor = DohLogger::EmailAcceptor.new(mail_server, from_address, to_address_list, logfile_name, nil, DohLogger::exceptionless_email_format)
51
+ Doh::log.add_acceptor(DohLogger::NOTIFY, notify_acceptor, true)
52
+ end
53
+
54
+ if acceptor_cfg = logger_cfg['error_acceptor']
55
+ require 'doh/logger/email_acceptor'
56
+ mail_server = root_cfg['mail_server'] || 'mail.' + root_cfg['domain_name']
57
+ from_address = acceptor_cfg['from_address'] || 'error@' + root_cfg['domain_name']
58
+ to_address_list = acceptor_cfg['to_address_list'] || ['error@' + root_cfg['domain_name']]
59
+ error_acceptor = DohLogger::EmailAcceptor.new(mail_server, from_address, to_address_list, logfile_name)
60
+ Doh::log.add_acceptor(DohLogger::ERROR, error_acceptor)
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,17 @@
1
+ require 'doh/app/home'
2
+
3
+ module DohApp
4
+
5
+ def self.load_config_file(name)
6
+ path = File.join(DohApp::home, 'config', name) + '.rb'
7
+ return false unless File.exist?(path)
8
+ require(path)
9
+ true
10
+ end
11
+
12
+ @@config = {}
13
+ def self.config
14
+ @@config
15
+ end
16
+
17
+ end
data/lib/doh/app/init.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'doh/app/home'
2
+ require 'doh/app/config'
2
3
 
3
4
  module DohApp
4
5
 
@@ -9,6 +10,8 @@ def self.init(file_or_directory)
9
10
  find_home(File.dirname(file_or_directory))
10
11
  end
11
12
  $LOAD_PATH.push(File.join(DohApp::home, 'lib'))
13
+ DohApp::load_config_file('system')
14
+ DohApp::load_config_file('development_environment') unless DohApp::load_config_file('active_environment')
12
15
  require 'doh/app_util'
13
16
  end
14
17
 
@@ -0,0 +1,36 @@
1
+ require 'doh/app/init'
2
+ require 'doh/app/activate_logger'
3
+ require 'doh/app/activate_database'
4
+
5
+ module DohApp
6
+
7
+ def self.use_default_runnable_production_config
8
+ file_acceptor_cfg = {'unique_filename' => true, 'flush' => false, 'severity' => 'debug'}
9
+ logger_cfg = {'file_acceptor' => file_acceptor_cfg, 'notify_acceptor' => {}, 'error_acceptor' => {}}
10
+ DohApp::config['logger'] = logger_cfg
11
+ DohApp::config['enable_logger'] = true
12
+ end
13
+
14
+ def self.use_default_runnable_development_config
15
+ root_cfg = DohApp::config
16
+ file_acceptor_cfg = {'unique_filename' => false, 'flush' => true, 'severity' => 'debug'}
17
+ stdout_acceptor_cfg = {'severity' => 'debug'}
18
+ logger_cfg = {'file_acceptor' => file_acceptor_cfg, 'stdout_acceptor' => stdout_acceptor_cfg}
19
+ root_cfg['logger'] = logger_cfg
20
+ root_cfg['enable_logger'] = true
21
+
22
+ root_cfg['database'] = {'username' => 'root', 'host' => 'localhost'}
23
+ end
24
+
25
+ def self.init_runnable(file_or_directory)
26
+ DohApp::init(file_or_directory)
27
+ unless DohApp::load_config_file('active_runnable')
28
+ unless DohApp::load_config_file('development_runnable')
29
+ DohApp::use_default_runnable_development_config
30
+ end
31
+ end
32
+ DohApp::activate_logger
33
+ DohApp::activate_database
34
+ end
35
+
36
+ end
@@ -0,0 +1,18 @@
1
+ require 'doh/app/init'
2
+
3
+ module DohApp
4
+
5
+ def self.use_default_unit_test_development_config
6
+ DohApp::config['database'] = {'username' => 'root', 'host' => 'localhost'}
7
+ end
8
+
9
+ def self.init_unit_test(file_or_directory)
10
+ DohApp::init(file_or_directory)
11
+ unless DohApp::load_config_file('active_unit_test')
12
+ unless DohApp::load_config_file('development_unit_test')
13
+ DohApp::use_default_unit_test_development_config
14
+ end
15
+ end
16
+ end
17
+
18
+ end
data/lib/doh/app.rb CHANGED
@@ -1,2 +1,2 @@
1
- require 'doh/app/init'
2
- DohApp::init($PROGRAM_NAME)
1
+ require 'doh/app/init_runnable'
2
+ DohApp::init_runnable($PROGRAM_NAME)
@@ -1,5 +1,3 @@
1
- require 'socket'
2
-
3
1
  module Doh
4
2
 
5
3
  @@source_ip = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dohruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.27
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Makani & Kem Mason
@@ -37,8 +37,13 @@ files:
37
37
  - bin/run_tests.rb
38
38
  - lib/doh
39
39
  - lib/doh/app
40
+ - lib/doh/app/activate_database.rb
41
+ - lib/doh/app/activate_logger.rb
42
+ - lib/doh/app/config.rb
40
43
  - lib/doh/app/home.rb
41
44
  - lib/doh/app/init.rb
45
+ - lib/doh/app/init_runnable.rb
46
+ - lib/doh/app/init_unit_test.rb
42
47
  - lib/doh/app/options.rb
43
48
  - lib/doh/app.rb
44
49
  - lib/doh/app_util.rb