I’m trying to do Ruby password input with the Highline gem and since I have the user input the password twice, I’d like to eliminate the duplication on the blocks I’m passing in. For example, a simple version of what I’m doing right now is:
new_pass = ask('Enter your new password: ') { |prompt| prompt.echo = false } verify_pass = ask('Enter again to verify: ') { |prompt| prompt.echo = false }
And what I’d like to change it to is something like this:
foo = Proc.new { |prompt| prompt.echo = false } new_pass = ask('Enter your new password: ') foo verify_pass = ask('Enter again to verify: ') foo
Which unfortunately doesn’t work. What’s the correct way to do this?
The code by David will work fine, but this is an easier and shorter solution:
You can also use an ampersand to assign a block to a variable when defining a method: