Попробуйте использовать определено?
if defined?(your variable)
do something
else
do something else
end
Если переменная определена, вы получите обратно строку с типом переменной, иначе определенным?вернет ноль.Остерегайтесь того, что определено? (nil) вернет строку «nil», а не значение nil.
Существует также очень рубиновый идиоматический способ сделать что-то похожее на «если не определено, сделать это», то есть
x ||= something
Быстрые примеры:
$ irb
>> x = 1
=> 1
>> x
=> 1
>> defined? x
=> "local-variable"
>> defined? y
=> nil
>> y ||= 42
=> 42
>> defined? y
=> "local-variable"
>> z = 3
=> 3
>> z ||= 43
=> 3
>> defined? nil
=> "nil"
>>