Здесь есть 2 "области видимости", и вы смешиваете их таким образом, что это невозможно.
get "/message/#{session[:test]}" do
^^ это запускается , когда приложение запускается , оно никогда не запускается повторно.Содержимое внутри блока может быть запущено несколько раз, но не сопоставитель маршрутов.
Способ справиться с этим состоит в том, чтобы изменить средство сопоставления маршрутов для принятия параметра URL:
get "/message/:some_var"
Затем в блоке см. params[:some_var]
.