なかだです。

lib/net/imap.rbを直接実行すると使える簡易IMAPクライアントを、パ
スワードの入力にIO#noechoを使うようにしてみました。また、実際に
必要になるまでパスワードの入力を遅らせるようにもしています。


Index: lib/net/imap.rb =================================================================== --- lib/net/imap.rb (revision 28780) +++ lib/net/imap.rb (working copy) @@ -3485,12 +3485,27 @@ end + begin + require 'io/console' + rescue LoadError + def _noecho(&block) + system("stty", "-echo") + begin + yield STDIN + ensure + system("stty", "echo") + end + end + else + def _noecho(&block) + STDIN.noecho(&block) + end + end + def get_password print "password: " - system("stty", "-echo") begin - return gets.chop + return _noecho(&:gets).chomp ensure - system("stty", "echo") - print "\n" + puts end end @@ -3543,5 +3558,7 @@ imap = Net::IMAP.new($host, :port => $port, :ssl => $ssl) begin - password = get_password + class << password = method(:get_password) + alias to_str call + end imap.authenticate($auth, $user, password) while true
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦