2013-08-07 3 views
2

Я ищу для чтения данные от пользователя, однако я не хочу, чтобы вход отображался непосредственно на экране. Скорее, я хотел бы оставить его пустым или еще лучше, обмануть персонажей, чтобы их вводили с помощью звездочек.Скрыть пользовательский ввод в Ruby

Например:

print "Password: " 
pass = STDIN.gets.chomp 
+1

Возможный дубликат [Как скрыть ввод пароля с терминала в скрипте ruby] (http://stackoverflow.com/questions/2338889/how-to-hide-password-input-from-terminal-in-ruby-script) –

ответ

6

Предполагая, что вы используете, по крайней мере рубиновый 1.9, вы можете использовать метод noecho на IO: http://www.ruby-doc.org/stdlib-2.0/libdoc/io/console/rdoc/IO.html#method-i-noecho

Итак:

require 'io/console' 
print "Password: " 
STDIN.noecho(&:gets).chomp 

Это не затемнять символов, но просто оставит входной терминал пустым.

+0

Каково ваше сообщение об ошибке? –

+0

Я нашел, что у highline gem есть больше опций. require 'highline/import' passowrd = ask ("Пароль:") {| q | q.echo = "*") Это заменит вход пользователя с помощью * – user1793514

Смежные вопросы