28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/uv-rays.rb', line 28
def self.klass_from_handler(klass, handler = nil, *args)
klass = if handler and handler.is_a?(Class)
raise ArgumentError, "must provide module or subclass of #{klass.name}" unless klass >= handler
handler
elsif handler
begin
handler::UR_CONNECTION_CLASS
rescue NameError
handler::const_set(:UR_CONNECTION_CLASS, Class.new(klass) {include handler})
end
else
klass
end
arity = klass.instance_method(:post_init).arity
expected = arity >= 0 ? arity : -(arity + 1)
if (arity >= 0 and args.size != expected) or (arity < 0 and args.size < expected)
raise ArgumentError, "wrong number of arguments for #{klass}#post_init (#{args.size} for #{expected})"
end
klass
end
|