3
我想模糊ruby脚本的用户输入(例如,输入密码时)。我已经尝试使用'密码'宝石和'highline/import'宝石,正如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>'
我不确定'主动支持'是否必要;我添加它是因为第一个错误行,它似乎没有帮助。我试着查看RubyGems文档服务器中找到的rdoc信息,查找每条单独的行,但仍然无法完全掌握问题所在。我在Windows环境中使用Ruby 1.9.2p180。任何有识之士将不胜感激。先谢谢你。
编辑 - 继卡斯帕的建议,并安装海莱/进口宝石(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: *********
感谢卡斯帕!
谢谢你的回应:
但是之前你需要安装它,您可以使用密码宝石。我按照你的建议重组了宝石。但是,我无法在Windows环境或Linux VM上安装ruby-password。他们一直抱怨:'错误:无法构建gem原生扩展.'我尝试安装Windows DevKit,但似乎没有正确安装。 Devkit的目的是在Windows上产生一个'Sane'环境(包括gcc,make,sh),所以它不应该影响Linux。所以我不确定我在做什么错 - 我不能得到ruby-password来安装。 – shelladept
嗯..查看密码需要在您安装之前安装一个名为'cracklib'的软件。你有两个选择:a)查看密码gem中的代码,并将你需要的部分提取到你自己的项目中(你不需要cracklib部分,只需要密码询问系统),或者b)使用'highline'宝石代替。 – Casper
再次感谢您的帮助;我再次尝试了'highline/import'宝石,它的工作原理与它应有的一样。我认为这是由于我按照你的建议对宝石进行了重新排序。非常感谢! – shelladept