Вы не можете. Вы можете вернуться из методов и выйти из блоков или циклов, но не eval.
Вместо этого вы можете попробовать бросить / поймать блок
eval "
should_stop = true
catch :stop do
puts 1
puts 2
throw :stop if should_stop
puts 3
end
"
или это:
should_stop = true
catch :stop do
eval "
puts 1
puts 2
throw :stop if should_stop
puts 3
"
end
или просто сделайте условное, как сказал Мчл, так как вы, вероятно, хотите, чтобы он был условно остановлен, а не только всегда, но бросок catch позволит вам выпрыгнуть из блока независимо от того, на сколько уровней вы находитесь ниже, что сделает его более устойчивым , если вам нужно вырваться из вложенного цикла или что-то в этом роде.