# Portable password input

**URL:** <https://www.ruby-forum.com/t/portable-password-input/88689>\
**Category:** Ruby\
**Created:** [March 13, 2007, 3:56pm UTC](https://www.ruby-forum.com/t/portable-password-input/88689 "2007-03-13T15:56:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [March 13, 2007, 3:56pm UTC](https://www.ruby-forum.com/t/portable-password-input/88689/1 "2007-03-13T15:56:31Z")

</div>

This has been asked about before, and I’ve been wondering about it  
myself. So I worked on it and came up with this. I know it’s rather a  
poor man’s way of handling it but at least it’s light and portable  
(well, at least I think it is).

def password( msg=nil )  
msg ||= “Enter Password”  
inp = ‘’

```
i = Thread.new{ inp = $stdin.gets }
c = Thread.new do
  loop do
    sleep 0.01
    $stdout << "\r#{msg}: "
    $stdout << "\r#{msg}: "
    $stdout.flush
  end
end

i.join

return inp

```

end

---

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [March 13, 2007, 4:01pm UTC](https://www.ruby-forum.com/t/portable-password-input/88689/2 "2007-03-13T16:01:31Z")

</div>

On Tue, 13 Mar 2007, Trans wrote:

> c = Thread.new do  
> return inp  
> end

gem install highline !!

😉

-a

---

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [March 13, 2007, 4:04pm UTC](https://www.ruby-forum.com/t/portable-password-input/88689/3 "2007-03-13T16:04:31Z")

</div>

On Mar 13, 2007, at 10:00 AM, removed\_email\_address@domain.invalid wrote:

> > i.join
> > 
> > return inp  
> > end
> 
> gem install highline !!

I agree. 🙂

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [March 13, 2007, 7:17pm UTC](https://www.ruby-forum.com/t/portable-password-input/88689/4 "2007-03-13T19:17:16Z")

</div>

gem install highline  
require ‘highline/import’  
ask('password: ') {|q| q.echo = ‘\*’ }
