2013-08-05 4 views
0

Учитывая следующий класс:рубин бросает ошибку на ноль

require 'rubygems' 
require 'oci8' 

class DB 
    attr_reader :handle 
    def initialize(username, password, db) 
    @handle = OCI8.new(username,password,db) 
    #We show an error if we don't have a handle after we try to connect to the DB 
    raise ArgumentError, "Database connection failed" if @handle.nil 
    end 
end 
def main() 
    myHandle=DB.new('myUser','myPass','myDB') 
    myHandle.handle().exec('select count(*) from vcas.deviceentitlement where rownum <= 100') 
end 

main() 

мой сценарий с ошибкой:

`initialize': undefined method `nil' for #<OCI8:USER> (NoMethodError) 
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:20:in `new' 
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:20:in `main' 
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:24 

Я думал nil было проверить, является ли объект был создан правильно, но это выглядит например, пытается запустить метод под названием nil, который не существует. Что происходит?

+0

Вы не указали, какой файл является 'правом.rb'. И, поскольку вы не показываете весь код, поместите номера строк в код так, чтобы он соответствовал описанию в обратном направлении. – sawa

+0

И, как вы думаете, или вы не думаете, что существует метод под названием «nil»? Это звучит как и то, и другое, что противоречит. – sawa

ответ

1

Это

@handle.nil?

llllllllllllllllllllll

См точку? Точка означает, что следующим является вызов метода. Имя метода написано nil?.

+0

Большое спасибо. Я полностью пропустил вопросительный знак. Только что начал изучать рубин, много идти. Множество вещей меня смущает. –

+0

@ndefontenay, добро пожаловать. – 7stud

0

Правильный способ, чтобы проверить, является ли объект nil является nil?

методы с знаком вопроса в конце их возвращают логическое значение.

Смежные вопросы