Ruby Gem“密码”似乎没有正确安装

时间:2011-08-06 15:14:19

标签: ruby rubygems passwords

我试图隐藏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!

1 个答案:

答案 0 :(得分:4)

在尝试加载任何其他gem文件之前,您需要先加载rubygems rubygems使您的Ruby程序能够使用require加载其他宝石:

require 'rubygems'
require 'password'
require 'activesupport'

在使用密码gem之前,您需要安装它:

gem install ruby-password