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