когда функция в Ruby ничего не возвращает, по умолчанию возвращается
nil
.
# есть какая-то переменная:
my_variable = puts "Hi"
Почему не так (нужно пробовать запускать построчно, а на сразу):
my_var = "hello"
puts my_var
p my_var
В интерпретаторе irb:
irb(main):001:0> my_var = "hello"
=> "hello"
irb(main):002:0> puts my_var
hello
=> nil
irb(main):003:0> p my_var
"hello"
=> "hello"
Возвращаемый функцией результат помечается как
=>
Можно увидеть, что
puts выводит на экран слово и затем возвращает
nil. В твоем примере
nil заносится в переменную
my_variable. Так что все, как и следовало того ожидать.