Вам нужно прочитать пароль в char[]
, преобразовать его в java.lang.String
, а затем преобразовать его в Ruby String
:
require 'java'
include_class 'java.lang.System'
include_class 'java.io.Console'
# Read the password into a char[]
java_char_array = System.console.readPassword("password:")
# Turn that into a java.lang.String
java_string = java.lang.String.new(java_char_array)
# Turn this into a Ruby string and strip off the newline.
password = java_string.to_s.strip
Причина, по которой read_password
даетты вернул char[]
немного сложно, но все сводится к большой песне и танцу о безопасности.Вы можете использовать Array.fill
для уничтожения содержимого char[]
и, таким образом, не дать паролю долго оставаться в памяти.