Вы можете использовать метод STDIN.noecho из модуля IO/console:
pw = STDIN.noecho(&:gets).chomp
Ответ 4
Вы хотите убедиться, что ваш код является идемпотентным... другие перечисленные здесь решения предполагают, что вы хотите выйти из этого блока функций с включенным эхом. Ну, что, если он был выключен, прежде чем вводить код, и он ожидал остаться?
begin
system "stty -echo"
print "Password: "; pass1 = $stdin.gets.chomp; puts "\n"
print "Password (repeat): "; pass2 = $stdin.gets.chomp; puts "\n"
if pass1 == pass2
# DO YOUR WORK HERE
else
STDERR.puts "Passwords do not match!"
end
ensure
system "stty echo"
end