dohruby 0.1.27 → 0.1.28

Sign up to get free protection for your applications and to get access to all the features.
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