From c00e84327f14845bd484e76b5ee5dfeb1fa9ce3d Mon Sep 17 00:00:00 2001 From: hsbt Date: Sun, 8 Oct 2017 01:32:18 +0000 Subject: Merge rubygems master. This is RC version of Rubygems 2.7.0. https://github.com/rubygems/rubygems/commit/688fb7e83c13c3fe7c2bb03c49a2db4c82852aee git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/user_interaction.rb | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'lib/rubygems/user_interaction.rb') diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index 390d0f2aea..cacd782e08 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -7,11 +7,6 @@ require 'rubygems/util' -begin - require 'io/console' -rescue LoadError -end - ## # Module that defines the default UserInteraction. Any class including this # module will have access to the +ui+ method that returns the default UI. @@ -314,12 +309,21 @@ class Gem::StreamUI password end - if IO.method_defined?(:noecho) then - def _gets_noecho - @ins.noecho {@ins.gets} + def require_io_console + @require_io_console ||= begin + begin + require 'io/console' + rescue LoadError + end + true end - elsif Gem.win_platform? - def _gets_noecho + end + + def _gets_noecho + require_io_console + if IO.method_defined?(:noecho) then + @ins.noecho {@ins.gets} + elsif Gem.win_platform? require "Win32API" password = '' @@ -332,9 +336,7 @@ class Gem::StreamUI end end password - end - else - def _gets_noecho + else system "stty -echo" begin @ins.gets -- cgit v1.2.3