Class: BinProxy::ClassLoader
- Inherits:
-
Object
- Object
- BinProxy::ClassLoader
- Includes:
- Logger
- Defined in:
- lib/binproxy/class_loader.rb
Instance Method Summary collapse
-
#initialize(root_path) ⇒ ClassLoader
constructor
A new instance of ClassLoader.
- #load_class(class_name, explicit_file_path = nil) ⇒ Object
Methods included from Logger
Constructor Details
#initialize(root_path) ⇒ ClassLoader
Returns a new instance of ClassLoader.
5 6 7 |
# File 'lib/binproxy/class_loader.rb', line 5 def initialize(root_path) @root_path = root_path end |
Instance Method Details
#load_class(class_name, explicit_file_path = nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/binproxy/class_loader.rb', line 9 def load_class(class_name, explicit_file_path = nil) #unload top-level module for old class #XXX This is a bit aggressive, maybe need a manual param to tune it? top_level_name = class_name.split('::')[0] old_const = Object.send(:remove_const, top_level_name) if Object.const_defined?(top_level_name) try_load_class(class_name, explicit_file_path) rescue StandardError Object.const_set(top_level_name, old_const) if old_const raise end |