9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/dumpr/driver.rb', line 9
def find(driver)
driver_file = "dumpr/driver/#{driver}"
require(driver_file)
const_ar = driver.to_s.split("/").reject{|i| i==""}.collect {|i| i.capitalize.gsub(/_(.)/) {$1.upcase} }
klass_str = const_ar.join('::')
begin
klass = const_ar.inject(self) do |mod, const_name|
mod.const_get(const_name)
end
rescue NameError => e
raise e
raise BadConfig, "could not find `#{klass_str}' in `#{driver_file}'"
end
raise BadConfig, "#{klass.name} is not a type of Dumpr::Driver!" unless klass < Dumpr::Driver::Base
return klass
rescue LoadError
raise BadConfig, "failed to load '#{driver_file}' !'"
end
|