diff options
Diffstat (limited to 'lib/rubygems/user_interaction.rb')
-rw-r--r-- | lib/rubygems/user_interaction.rb | 28 |
1 files changed, 15 insertions, 13 deletions
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 |