local_variables
перечисляет локальные переменные, но перечисляет их до того, как они будут определены.Смотрите это:
p local_variables
a = 1
p local_variables
это выводит
[:a]
[:a]
, что может не соответствовать вашим ожиданиям.Контраст с defined?
p defined? a
a = 1
p defined? a
, который выводит более ожидаемый
nil
"local-variable"