lib/libvirt-ruby.rb in libvirt-ruby-1.0.2 vs lib/libvirt-ruby.rb in libvirt-ruby-2.0.0

- old
+ new

@@ -1,35 +1,35 @@ require "libvirt-ruby/version" require "ffi" module Libvirt - module Ruby - autoload :Exceptions, 'libvirt-ruby/exceptions' + autoload :Exceptions, 'libvirt-ruby/exceptions' + class Base extend FFI::Library - def self.method_missing(method, *args) + def method_missing(method, *args) args.flatten! return_type = args.delete(args.last) - raise Libvirt::Ruby::Exceptions::NoReturnParameter unless return_type + raise Libvirt::Exceptions::NoReturnParameter unless return_type dispatcher(method, args, return_type) end private - def self.dispatcher(method, args = [], return_type = nil) - raise Libvirt::Ruby::Exceptions::WrongCall unless not_direct_call? + def dispatcher(method, args = [], return_type = nil) + raise Libvirt::Exceptions::WrongCall unless not_direct_call? begin ffi_lib "libvirt" attach_function method.to_s, method.to_s, args, return_type rescue FFI::NotFoundError - raise Libvirt::Ruby::Exceptions::InvalidFunction.new(method.to_s) + raise Libvirt::Exceptions::InvalidFunction.new(method.to_s) rescue LoadError - raise Libvirt::Ruby::Exceptions::MissingLib + raise Libvirt::Exceptions::MissingLib end end - def self.not_direct_call? + def not_direct_call? caller[1][/`.*'/] and caller[1][/`.*'/][1..-2] == 'method_missing' end end end \ No newline at end of file