Class: BinProxy::ClassLoader

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/binproxy/class_loader.rb

Instance Method Summary collapse

Methods included from Logger

log

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