Ruby Gem "пароль" не похоже на правильную установку - PullRequest
3 голосов
/ 06 августа 2011

Я пытаюсь скрыть пользовательский ввод (например, при вводе пароля) для сценария 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: *********

Спасибо, Каспер!

1 Ответ

4 голосов
/ 06 августа 2011

Вам нужно загрузить rubygems до того, как вы попытаетесь загрузить любые другие гем-файлы. rubygems - это то, что позволяет вашим программам на Ruby загружать другие гемы с require:

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

Прежде чем вы сможете использовать гем пароля, вам необходимо установить его:

gem install ruby-password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...