summaryrefslogtreecommitdiff
path: root/lib/rubygems/user_interaction.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/user_interaction.rb')
-rw-r--r--lib/rubygems/user_interaction.rb28
1 files changed, 13 insertions, 15 deletions
diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb
index cacd782e08..390d0f2aea 100644
--- a/lib/rubygems/user_interaction.rb
+++ b/lib/rubygems/user_interaction.rb
@@ -7,6 +7,11 @@
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.
@@ -309,21 +314,12 @@ class Gem::StreamUI
password
end
- def require_io_console
- @require_io_console ||= begin
- begin
- require 'io/console'
- rescue LoadError
- end
- true
- end
- end
-
- def _gets_noecho
- require_io_console
- if IO.method_defined?(:noecho) then
+ if IO.method_defined?(:noecho) then
+ def _gets_noecho
@ins.noecho {@ins.gets}
- elsif Gem.win_platform?
+ end
+ elsif Gem.win_platform?
+ def _gets_noecho
require "Win32API"
password = ''
@@ -336,7 +332,9 @@ class Gem::StreamUI
end
end
password
- else
+ end
+ else
+ def _gets_noecho
system "stty -echo"
begin
@ins.gets