Я пытаюсь скрыть пользовательский ввод (например, при вводе пароля) для сценария ruby. Я попытался использовать как гем 'password', так и гем 'highline / import', как предложено в этой статье переполнения стека. Однако у меня, кажется, есть некоторые проблемы с получением драгоценных камней. Когда мой сценарий просто:
require 'password'
require 'rubygems'
require 'activesupport'
выводит следующие ошибки.
C:\Users\username\Desktop>ruby test.rb
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
activesupport (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/password-1.3/lib/password.rb:1:
in `<top (required)>'
from <internal:lib/rubygems/custom_require>:33:in `require'
from <internal:lib/rubygems/custom_require>:33:in `rescue in require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from test.rb:1:in `<main>'
Я не уверен, что 'activesupport' необходим; Я добавил его из-за первой строки ошибки, и это, похоже, не помогло. Я попытался просмотреть информацию по rdoc, находящуюся на сервере документации RubyGems, и просмотреть каждую из отдельных строк, но все еще не совсем понял, в чем проблема. Я использую Ruby 1.9.2p180 в среде Windows. Любое понимание будет высоко ценится. Заранее спасибо.
РЕДАКТИРОВАТЬ -
Следуя совету Каспера и установив гем highline / import (gem install highline
), я смог найти следующее решение моей конечной цели - скрыть ввод пароля:
require 'rubygems'
require 'highline/import'
username = ask("Enter username: ") { |x| x.echo = true }
password = ask("Enter password: ") { |x| x.echo = "*" } #assign false to echo nothing
, который производит следующее:
Enter username: Joe
Enter password: *********
Спасибо, Каспер!