s
не возвращает значение, Поскольку @ sepp2k указывает в комментарии, puts
возвращает nil
, поэтому nil
автоматически становится возвращаемым значением, поскольку это последний оператор в процессе.
Он просто выводится на терминал как возвращаемое значение последнего оператора, аналогично тому загадочному выводу после того, как вы присвоите proc для s
.