Estoy tratando de hacer la entrada de contraseña de Ruby con el Highline gem y dado que el usuario ingresa la contraseña dos veces, me gustaría eliminar la duplicación en los bloques que paso. Para ejemplo, una versión sencilla de lo que estoy haciendo en este momento es:Ruby - Paso de bloques a métodos
new_pass = ask("Enter your new password: ") { |prompt| prompt.echo = false }
verify_pass = ask("Enter again to verify: ") { |prompt| prompt.echo = false }
Y lo que me gustaría cambiarlo a algo como esto:
foo = Proc.new { |prompt| prompt.echo = false }
new_pass = ask("Enter your new password: ") foo
verify_pass = ask("Enter again to verify: ") foo
que por desgracia no funciona . ¿Cuál es la forma correcta de hacer esto?
Lo intenté inicialmente (antes de hacer esta pregunta), pero cuando lo hago, Highline ignora el contenido del bloque y muere con este error: método indefinido '& 'para" inputstring ": String (NoMethodError) Donde inputstring es lo que escribí en el primer prompt. –
Suena extraño. ¿Tal vez se olvidó de la coma y Ruby asumió que desea invocar el método "&" en la cadena de solicitud? Acabo de probar el mismo código con HighLine y funciona bien. –
Sí, creo que estaba haciendo ask ("goo") y foo en lugar de preguntar ("goo", y foo). Eso funciona ahora. Gracias Adam! –