我试图隐藏ruby脚本的用户输入(例如,输入密码时)。我已尝试使用'密码'gem和'highline / import'gem,正如this堆栈溢出文章所建议的那样。但是,我似乎有一些问题让宝石工作。当我的脚本只是:
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'是否必要;我添加它是因为第一个错误行,它似乎没有帮助。我试着查看RubyGems文档服务器中的rdoc信息并查找每个单独的行,但仍然无法完全掌握问题所在。我在Windows环境中使用Ruby 1.9.2p180。任何见解都会非常感激。提前谢谢。
编辑 -
在遵循Casper的建议并安装highline / import gem(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: *********
谢谢Casper!
答案 0 :(得分:4)
在尝试加载任何其他gem文件之前,您需要先加载rubygems
。 rubygems
使您的Ruby程序能够使用require
加载其他宝石:
require 'rubygems'
require 'password'
require 'activesupport'
在使用密码gem之前,您需要安装它:
gem install ruby-password