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