langrove 0.0.4.5 → 0.0.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. data/.rvmrc +29 -38
  2. data/Gemfile +13 -7
  3. data/Gemfile.lock +35 -32
  4. data/Guardfile +11 -0
  5. data/README.md +34 -0
  6. data/Rakefile +8 -6
  7. data/bin/README.md +3 -0
  8. data/bin/langrove +1 -2
  9. data/langrove.gemspec +35 -0
  10. data/lib/langrove/README.md +82 -0
  11. data/lib/langrove/adaptor/README.md +92 -0
  12. data/lib/langrove/adaptor/adaptor_base.rb +123 -0
  13. data/lib/langrove/adaptor/base.rb +12 -2
  14. data/lib/langrove/adaptor/default.rb +8 -0
  15. data/lib/langrove/adaptor/event_machine_adaptor.rb +152 -0
  16. data/lib/langrove/adaptor/query_adaptor.rb +271 -0
  17. data/lib/langrove/behaviour/README.md +170 -0
  18. data/lib/langrove/behaviour/assessable.rb +63 -0
  19. data/lib/langrove/behaviour/base.rb +16 -0
  20. data/lib/langrove/behaviour/behaviour_base.rb +341 -0
  21. data/lib/langrove/behaviour/enqueueable.rb +104 -0
  22. data/lib/langrove/behaviour/notifiable.rb +48 -0
  23. data/lib/langrove/behaviour/persistable.rb +89 -0
  24. data/lib/langrove/behaviour/preloadable.rb +63 -0
  25. data/lib/langrove/daemon/README.md +7 -0
  26. data/lib/langrove/daemon/base.rb +9 -2
  27. data/lib/langrove/daemon/daemon_base.rb +330 -0
  28. data/lib/langrove/daemon/default.rb +3 -0
  29. data/lib/langrove/ext/README.md +48 -0
  30. data/lib/langrove/ext/class_loader.rb +9 -66
  31. data/lib/langrove/ext/config_item.rb +31 -23
  32. data/lib/langrove/ext/config_loader.rb +42 -8
  33. data/lib/langrove/ext/fake_config.rb +121 -0
  34. data/lib/langrove/ext/fake_logger.rb +50 -7
  35. data/lib/langrove/ext/fake_root.rb +38 -0
  36. data/lib/langrove/ext/hash.rb +56 -0
  37. data/lib/langrove/ext/i.rb +43 -0
  38. data/lib/langrove/ext/log_monitor.rb +272 -0
  39. data/lib/langrove/ext/module_loader.rb +52 -0
  40. data/lib/langrove/ext/recursive_string.rb +94 -0
  41. data/lib/langrove/ext/spec_helper.rb +84 -0
  42. data/lib/langrove/ext.rb +8 -2
  43. data/lib/langrove/handler/README.md +161 -0
  44. data/lib/langrove/handler/base.rb +29 -2
  45. data/lib/langrove/handler/default.rb +4 -0
  46. data/lib/langrove/handler/deferred.rb +105 -0
  47. data/lib/langrove/handler/handler_base.rb +242 -0
  48. data/lib/langrove/handler/http_servlet.rb +58 -0
  49. data/lib/langrove/handler/socket.rb +21 -0
  50. data/lib/langrove/handler/socket_base.rb +127 -0
  51. data/lib/langrove/handler/socket_multiplexer.rb +438 -0
  52. data/lib/langrove/handler/web_socket.rb +41 -0
  53. data/lib/langrove/plugin/README.md +76 -0
  54. data/lib/langrove/plugin/assessor.rb +363 -0
  55. data/lib/langrove/plugin/base.rb +18 -0
  56. data/lib/langrove/plugin/buffered_persistor.rb +97 -0
  57. data/lib/langrove/plugin/enqueuer.rb +186 -0
  58. data/lib/langrove/plugin/notifier.rb +144 -0
  59. data/lib/langrove/plugin/persistor.rb +360 -0
  60. data/lib/langrove/plugin/plugin_base.rb +79 -0
  61. data/lib/langrove/plugin/yaml_file.md +5 -0
  62. data/lib/langrove/plugin/yaml_file.rb +261 -0
  63. data/lib/langrove/protocol/README.md +102 -0
  64. data/lib/langrove/protocol/base.rb +10 -2
  65. data/lib/langrove/protocol/default.rb +3 -0
  66. data/lib/langrove/protocol/protocol_base.rb +60 -0
  67. data/lib/langrove/protocol/syslog.rb +34 -27
  68. data/lib/langrove/root/README.md +17 -0
  69. data/lib/langrove/root/base.rb +11 -0
  70. data/lib/langrove/root/config.rb +163 -0
  71. data/lib/langrove/root/root_base.rb +259 -0
  72. data/lib/langrove/server/README.md +7 -0
  73. data/lib/langrove/server/base.rb +9 -0
  74. data/lib/langrove/server/default.rb +3 -0
  75. data/lib/langrove/server/server_base.rb +301 -0
  76. data/lib/langrove/version.rb +3 -1
  77. data/lib/langrove.rb +44 -1
  78. data/spec/langrove/adaptor/adaptor_base_spec.rb +33 -0
  79. data/spec/langrove/adaptor/event_machine_adaptor_spec.rb +62 -0
  80. data/spec/langrove/adaptor/query_adaptor_spec.rb +94 -0
  81. data/spec/langrove/behaviour/assessable_spec.rb +42 -0
  82. data/spec/langrove/behaviour/behaviour_base_spec.rb +396 -0
  83. data/spec/langrove/behaviour/enqueueable_spec.rb +19 -0
  84. data/spec/langrove/behaviour/notifiable_spec.rb +6 -0
  85. data/spec/langrove/behaviour/persistable_spec.rb +19 -0
  86. data/spec/langrove/behaviour/preloadable_spec.rb +19 -0
  87. data/spec/langrove/daemon/base_spec.rb +6 -0
  88. data/spec/langrove/daemon/daemon_base_spec.rb +253 -0
  89. data/spec/langrove/ext/class_loader_spec.rb +9 -12
  90. data/spec/langrove/ext/fake_config_spec.rb +50 -0
  91. data/spec/langrove/ext/fake_logger_spec.rb +12 -0
  92. data/spec/langrove/ext/fake_root_spec.rb +19 -0
  93. data/spec/langrove/ext/hash_spec.rb +54 -0
  94. data/spec/langrove/ext/i_spec.rb +11 -0
  95. data/spec/langrove/ext/log_monitor_spec.rb +254 -0
  96. data/spec/langrove/ext/module_loader_spec.rb +70 -0
  97. data/spec/langrove/ext/recursive_string_spec.rb +132 -0
  98. data/{functional/config/environments/development.rb → spec/langrove/ext/spec_helper_spec.rb} +0 -0
  99. data/spec/langrove/handler/deferred_spec.rb +9 -0
  100. data/spec/langrove/handler/handler_base_spec.rb +134 -0
  101. data/spec/langrove/handler/socket_base_spec.rb +76 -0
  102. data/spec/langrove/handler/socket_multiplexer_spec.rb +480 -0
  103. data/spec/langrove/handler/socket_spec.rb +6 -0
  104. data/spec/langrove/handler/web_socket_spec.rb +19 -0
  105. data/spec/langrove/plugin/assessor_spec.rb +278 -0
  106. data/spec/langrove/plugin/buffered_persistor_spec.rb +94 -0
  107. data/spec/langrove/plugin/enqueuer_spec.rb +136 -0
  108. data/spec/langrove/plugin/notifier_spec.rb +107 -0
  109. data/spec/langrove/plugin/persistor_spec.rb +300 -0
  110. data/spec/langrove/plugin/plugin_base_spec.rb +86 -0
  111. data/spec/langrove/plugin/yaml_file_spec.rb +348 -0
  112. data/spec/langrove/protocol/protocol_base_spec.rb +19 -0
  113. data/spec/langrove/protocol/syslog_spec.rb +5 -2
  114. data/spec/langrove/root/config_spec.rb +103 -0
  115. data/spec/langrove/root/root_base_spec.rb +93 -0
  116. data/spec/langrove/server/server_base_spec.rb +414 -0
  117. data/spec/spec_helper.rb +38 -0
  118. metadata +157 -92
  119. data/.watchr +0 -27
  120. data/functional/config/boot.rb +0 -64
  121. data/functional/config/daemons.yml +0 -13
  122. data/functional/config/environment.rb +0 -28
  123. data/functional/config/environments/production.rb +0 -0
  124. data/functional/config/environments/test.rb +0 -0
  125. data/functional/lib/client/socket_to_file.rb +0 -47
  126. data/functional/lib/daemon/datagram.rb +0 -21
  127. data/functional/lib/protocol/socket_to_file.rb +0 -55
  128. data/functional/libexec/daemon.rb +0 -68
  129. data/functional/tmp/README +0 -1
  130. data/lib/langrove/_base.rb +0 -28
  131. data/lib/langrove/adaptor_base.rb +0 -116
  132. data/lib/langrove/client/base.rb +0 -2
  133. data/lib/langrove/client/datagram.rb +0 -25
  134. data/lib/langrove/client_base.rb +0 -92
  135. data/lib/langrove/daemon_base.rb +0 -281
  136. data/lib/langrove/ext/find.rb +0 -90
  137. data/lib/langrove/ext/persistable.rb +0 -103
  138. data/lib/langrove/handler_base.rb +0 -148
  139. data/lib/langrove/job/base.rb +0 -1
  140. data/lib/langrove/job_base.rb +0 -24
  141. data/lib/langrove/protocol_base.rb +0 -32
  142. data/spec/functional/daemon/datagram_spec.rb +0 -121
  143. data/spec/langrove/adaptor_base_spec.rb +0 -63
  144. data/spec/langrove/client/datagram_spec.rb +0 -1
  145. data/spec/langrove/client_base_spec.rb +0 -5
  146. data/spec/langrove/daemon_base_spec.rb +0 -154
  147. data/spec/langrove/ext/find_spec.rb +0 -53
  148. data/spec/langrove/ext/persistable_spec.rb +0 -117
  149. data/spec/langrove/handler_base_spec.rb +0 -103
  150. data/spec/langrove/job_base_spec.rb +0 -28
  151. data/spec/langrove/protocol_base_spec.rb +0 -6
  152. data/spec/todo_spec.rb +0 -12
  153. data/tmp/README +0 -2
@@ -0,0 +1,121 @@
1
+ module LanGrove
2
+
3
+ class FakeConfig
4
+
5
+ #
6
+ # for easy spec setup
7
+ #
8
+
9
+ attr_accessor :system
10
+
11
+ attr_accessor :application
12
+
13
+ attr_accessor :plugins
14
+
15
+ attr_accessor :daemons
16
+
17
+ def initialize
18
+
19
+ flush
20
+
21
+ end
22
+
23
+ def flush
24
+
25
+ @system = 'system'
26
+ @application = 'application'
27
+ @plugins = {}
28
+ @daemons = {}
29
+
30
+ end
31
+
32
+ def []( key )
33
+
34
+ return self.send( key )
35
+
36
+ end
37
+
38
+ def hash
39
+
40
+ config = {
41
+
42
+ :system => 'system',
43
+ :application => 'application',
44
+ :plugins => @plugins,
45
+ :daemons => @daemons
46
+
47
+ }
48
+
49
+ return config
50
+
51
+ end
52
+
53
+ def create_behaviour( daemon, behaviour, plugin, trigger = :handler_after_receive, action = nil )
54
+
55
+ init_daemon_config( daemon )
56
+
57
+ @daemons[daemon][:server][:behaviours] = {} if
58
+ @daemons[daemon][:server][:behaviours].nil?
59
+
60
+ behaviours = @daemons[daemon][:server][:behaviours]
61
+
62
+ behaviours[behaviour] = {} if
63
+ behaviours[behaviour].nil?
64
+
65
+ this = behaviours[behaviour]
66
+
67
+ this[:plugin] = plugin
68
+
69
+ this[:at] = {
70
+ trigger => action
71
+ }
72
+
73
+ end
74
+
75
+ def create( daemon_name, module_name, module_class, module_config = {} )
76
+
77
+ init_daemon_config( daemon_name )
78
+
79
+ @daemons[daemon_name][module_name] = {
80
+
81
+ :class => module_class
82
+
83
+ }
84
+
85
+ @daemons[daemon_name][module_name].merge!( module_config )
86
+
87
+
88
+ end
89
+
90
+ def get_plugin_config( name )
91
+
92
+ @plugins[ name ]
93
+
94
+ end
95
+
96
+ def get_plugin( name )
97
+
98
+ config = LanGrove::Config::Base.new( ROOT, hash, LOG )
99
+ config.get_plugin( name )
100
+
101
+ end
102
+
103
+ private
104
+
105
+ def init_daemon_config( daemon_name )
106
+
107
+ if @daemons[daemon_name].nil?
108
+
109
+ @daemons[daemon_name] = {}
110
+ @daemons[daemon_name][:adaptor] = nil
111
+ @daemons[daemon_name][:handler] = nil
112
+ @daemons[daemon_name][:protocol] = nil
113
+ @daemons[daemon_name][:server] = {}
114
+
115
+ end
116
+
117
+ end
118
+
119
+ end
120
+
121
+ end
@@ -1,8 +1,51 @@
1
- module LanGrove class FakeLogger
2
- def initialize( parameter = :noisey )
3
- @parameter = parameter
1
+ module LanGrove
2
+
3
+ class FakeLogger
4
+
5
+ #
6
+ # for easy spec setup
7
+ #
8
+
9
+ class << self
10
+
11
+ def on
12
+
13
+ @silent = false
14
+
15
+ end
16
+
17
+ def off
18
+
19
+ @silent = true
20
+
21
+ end
22
+
23
+ def debug( msg )
24
+
25
+ puts "LOG.debug: [#{msg}]" unless @silent
26
+
27
+ end
28
+
29
+ def info( msg )
30
+
31
+ puts "LOG.info: [#{msg}]" unless @silent
32
+
33
+ end
34
+
35
+ def warn( msg )
36
+
37
+ puts "LOG.warn: [#{msg}]" unless @silent
38
+
39
+ end
40
+
41
+ def error( msg )
42
+
43
+ puts "LOG.error: [#{msg}]" unless @silent
44
+
45
+ end
46
+
47
+ end
48
+
4
49
  end
5
- def method_missing( symbol, *args, &block )
6
- puts "#{symbol}: #{args}" unless @parameter == :silent
7
- end
8
- end; end
50
+
51
+ end
@@ -0,0 +1,38 @@
1
+ module LanGrove
2
+
3
+ class FakeRoot
4
+
5
+ #
6
+ # for easy spec setup
7
+ #
8
+
9
+ attr_accessor :logger
10
+ attr_accessor :config
11
+
12
+ def initialize( config = {
13
+
14
+ #
15
+ # Fake Config
16
+ #
17
+
18
+ :system => 'system',
19
+ :application => 'application'
20
+
21
+ }, logger = FakeLogger )
22
+
23
+ @logger = logger
24
+ @config = LanGrove::Config::Base.new( self, config, logger )
25
+
26
+ end
27
+
28
+
29
+
30
+ def method_missing( symbol, *args, &block )
31
+
32
+ logger.info "call to ROOT.#{symbol}( #{args})" unless logger.nil?
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,56 @@
1
+ class Hash
2
+
3
+
4
+ def sym_key_sub( sub = '_' )
5
+
6
+ #
7
+ # Substitutes all :symkeys with '_symkeys'
8
+ #
9
+
10
+ replace( inject({}) do |hash, (key,val) |
11
+
12
+ val.sym_key_sub( sub ) if val.is_a?( Hash )
13
+
14
+ if key.is_a?( Symbol )
15
+
16
+ hash["#{sub}#{key.to_s}"] = val
17
+
18
+ else
19
+
20
+ hash[key] = val
21
+
22
+ end
23
+
24
+ hash
25
+
26
+ end
27
+
28
+ )
29
+
30
+ end
31
+
32
+ def sym_key_usub( sub = '_')
33
+
34
+ replace( inject({}) do |hash, (key,val) |
35
+
36
+ val.sym_key_usub( sub ) if val.is_a?( Hash )
37
+
38
+ if key[0] == '_'
39
+
40
+ hash[key[1..-1].to_sym] = val
41
+
42
+ else
43
+
44
+ hash[key] = val
45
+
46
+ end
47
+
48
+ hash
49
+
50
+ end
51
+
52
+ )
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,43 @@
1
+ require 'awesome_print'
2
+
3
+ class I
4
+
5
+ def self.show( variable )
6
+
7
+ ap variable
8
+
9
+ end
10
+
11
+ def self.shoe( variable )
12
+
13
+ #
14
+ # i keep writing shoe, support it... ;)
15
+ #
16
+
17
+ ap variable
18
+
19
+ end
20
+
21
+ def self.notify( logger, need_description, tags = [] )
22
+
23
+ #
24
+ # log reminders into the running server
25
+ #
26
+ do_it = "["
27
+ tags.each do |tag|
28
+
29
+
30
+
31
+ do_it = "#{do_it}:#{tag}, "
32
+
33
+ end
34
+
35
+ done = do_it.chop.chop
36
+
37
+ logger.info( "#{done}] (todo) #{need_description}" )
38
+
39
+ end
40
+
41
+ end unless defined?( I ) # unlikely
42
+
43
+ Unimplemented = I
@@ -0,0 +1,272 @@
1
+ module LanGrove
2
+
3
+ module LogMonitor
4
+
5
+ def log_monitor_config( config, hash = nil )
6
+
7
+ #
8
+ # <hash> as the state storage (capsule)
9
+ #
10
+
11
+ #
12
+ # <config> as hash, as loaded from the
13
+ # relevant cofig branch.
14
+ #
15
+ # :success: regex match
16
+ # :error: regex match
17
+ # :known_errors:
18
+ # :short_name: regex_match
19
+ # :nother_name: nother match
20
+ # :versions:
21
+ # :version_name: regex match
22
+ #
23
+ # Errors that match :error: but no :known_error: are
24
+ # tracked as unknown errors.
25
+ #
26
+ # Errors that match a :known_errors: are tracked by name
27
+ #
28
+ # Success match will reset all errors.... (GONE!)
29
+ # and set :success: to true on the capsule.
30
+ #
31
+ # last_run_at is updated with each log message.
32
+ #
33
+
34
+ raise LanGrove::DaemonConfigException.new(
35
+
36
+ "#{self.class} requires :success:, :error:, and :known_errors: config."
37
+
38
+ ) unless (
39
+
40
+ config.has_key?( :success ) and
41
+ config.has_key?( :error ) and
42
+ config.has_key?( :known_errors )
43
+
44
+ )
45
+
46
+ #
47
+ # Mandatory config
48
+ #
49
+ @success_match = config[:success]
50
+ @error_match = config[:error]
51
+
52
+
53
+ #
54
+ # Optional config
55
+ #
56
+ @known_error_matchers = config[:known_errors]
57
+ @known_error_matchers ||= {}
58
+
59
+ @version_matchers = config[:versions]
60
+ @version_matchers ||= {}
61
+
62
+ @known_error_matchers.each do |name, matcher|
63
+
64
+ raise LanGrove::DaemonConfigException.new(
65
+
66
+ "#{self.class} :known_error:#{name}: has no regex matcher"
67
+
68
+ ) if matcher.nil?
69
+
70
+ end
71
+
72
+ #
73
+ # Move unknown_errors that are now in config
74
+ # to known_errors.
75
+ #
76
+
77
+ hash['unknown_errors'].each do |error_name, count|
78
+
79
+ known_error = known_error?( error_name )
80
+
81
+ unless known_error.nil?
82
+
83
+ hash['known_errors'] = {} if hash['known_errors'].nil?
84
+
85
+ hash['known_errors'][known_error] = count
86
+
87
+ hash['unknown_errors'].delete error_name
88
+
89
+ end
90
+
91
+ end if (
92
+
93
+ not hash.nil? and
94
+ hash.has_key?( 'unknown_errors' )
95
+
96
+ )
97
+
98
+
99
+ #
100
+ # Clear known_errors from state that
101
+ # are no longer in config
102
+ #
103
+
104
+ hash['known_errors'].each_key do |error_name|
105
+
106
+ unless @known_error_matchers.has_key?( error_name )
107
+
108
+ hash['known_errors'].delete error_name
109
+
110
+ end
111
+
112
+ end if (
113
+
114
+ not hash.nil? and
115
+ hash.has_key?( 'known_errors' )
116
+
117
+ )
118
+
119
+ end
120
+
121
+ def log_monitor_event( hash, event )
122
+
123
+ changed = false
124
+
125
+ hash['known_errors'] = {} if hash['known_errors'].nil?
126
+ hash['unknown_errors'] = {} if hash['unknown_errors'].nil?
127
+
128
+ hash['last_ran_at'] = event[:timestamp]
129
+
130
+ changed = update_versions( hash, event )
131
+
132
+ success_match = /#{@success_match}/.match( event[:event] )
133
+
134
+ unless success_match.nil?
135
+
136
+ hash['success'] = true
137
+
138
+ hash['success_at'] = event[:timestamp]
139
+
140
+ changed = log_monitor_reset( hash )
141
+
142
+ return changed
143
+
144
+ end
145
+
146
+ error_match = /#{@error_match}/.match( event[:event] )
147
+ error_type = 'unknown_errors'
148
+ error_name = nil
149
+
150
+ unless error_match.nil?
151
+
152
+ #
153
+ # Success to false on error
154
+ #
155
+
156
+ hash['success'] = false
157
+
158
+ error_name = event[:event]
159
+
160
+ known_error = known_error?( error_name )
161
+
162
+ unless known_error.nil?
163
+
164
+ error_type = 'known_errors'
165
+ error_name = known_error
166
+
167
+ end
168
+
169
+ end
170
+
171
+ unless error_name.nil?
172
+
173
+ if hash[ error_type ].nil?
174
+
175
+ hash[ error_type ] = {}
176
+
177
+ end
178
+
179
+ if hash[ error_type ][ error_name ].nil?
180
+
181
+ hash[ error_type ][ error_name ] = 0
182
+
183
+ end
184
+
185
+ hash[ error_type ][ error_name ] =
186
+ hash[ error_type ][ error_name ] + 1
187
+
188
+ changed = true
189
+
190
+ end
191
+
192
+ return changed
193
+
194
+ end
195
+
196
+ def log_monitor_reset( hash )
197
+
198
+ hash.delete 'unknown_errors'
199
+
200
+ hash['unknown_errors'] = {}
201
+
202
+ hash.delete 'known_errors'
203
+
204
+ hash['known_errors'] = {}
205
+
206
+ return true
207
+
208
+ end
209
+
210
+
211
+ private
212
+
213
+
214
+ def update_versions( hash, event )
215
+
216
+ @version_matchers.each do |version_name, match_regex|
217
+
218
+ version_match = /#{match_regex}/.match( event[:event] )
219
+
220
+ unless version_match.nil?
221
+
222
+ version_number = version_match[1]
223
+
224
+ return false if version_number.nil? # bad regex... did not match 'out' an actual version number
225
+
226
+ hash[version_name] = {} if hash[version_name.to_sym].nil?
227
+
228
+ hash[version_name]['latest'] = version_number
229
+
230
+ #
231
+ # Over time this (collected date of version change / her host)
232
+ # may get quite long
233
+ #
234
+ hash[version_name][version_number] = event[:timestamp]
235
+
236
+ return true
237
+
238
+ end
239
+
240
+ end
241
+
242
+ return false
243
+
244
+ end
245
+
246
+
247
+ def known_error?( event )
248
+
249
+ known_error = nil
250
+
251
+ @known_error_matchers.each do |key, value|
252
+
253
+ known_error = /#{value}/.match( event )
254
+
255
+ unless known_error.nil?
256
+
257
+ error_type = :known_errors
258
+ error_name = key
259
+
260
+ return key
261
+
262
+ end
263
+
264
+ end
265
+
266
+ return nil
267
+
268
+ end
269
+
270
+ end
271
+
272
+ end
@@ -0,0 +1,52 @@
1
+ module LanGrove
2
+ class ModuleLoader
3
+ class << self
4
+
5
+ def create(args={})
6
+
7
+ #
8
+ # args = {
9
+ #
10
+ # :config => <hash of config>,
11
+ # :key => <daemon_root_component_key>,
12
+ # :mandatory => <default true>
13
+ #
14
+ # }
15
+ #
16
+
17
+
18
+ # if the config has no 'module key'
19
+ unless args[:config].has_key?(args[:key])
20
+
21
+ mandatory = args[:mandatory]
22
+ mandatory = true if mandatory.nil? #stu defaults to correct
23
+
24
+ if mandatory
25
+ raise DaemonConfigException, "Cannot find key with '#{args[:key]}'"
26
+ else
27
+ # just exit
28
+ return nil
29
+ end
30
+ end
31
+
32
+ params = {
33
+ :class => "Default",
34
+ :module => args[:key].to_s.camelize
35
+ }
36
+
37
+ begin
38
+ class_name = args[:config][args[:key]][:class]
39
+ rescue
40
+ #class_name = 'Base' if args[:config].has_key?( args[:key] )
41
+ end
42
+
43
+ params.merge!(:class => class_name) unless class_name.nil?
44
+
45
+
46
+
47
+ ClassLoader.create(params, args[:logger])
48
+ end
49
+
50
+ end
51
+ end
52
+ end