Mensaje pre-llenado en Ruby [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Qué me dará algo como readline ruby ​​con un valor predeterminado? 5 respuestas

Estoy usando a Ruby para escribir una pequeña utilidad de línea de comandos para buscar en Pubmed. En este momento, solicito al usuario que realice una consulta y muestre los resultados, y el usuario tiene la opción de adjuntar a la consulta o ingresar una consulta completamente nueva. Me gustaría agregar la posibilidad de editar la consulta actual; es decir, la solicitud debe venir pre-llenada con una versión editable de la consulta anterior, así:

Enter query: <PREVIOUS QUERY HERE>

Es bastante fácil imprimir la consulta anterior junto al indicador, pero ¿cómo puedo hacer que esta salida sea editable, como si el usuario la hubiera escrito ella misma?

@casper: Gracias por la respuesta Casper. Probé el código que proporcionaste a continuación, y de hecho funciona por sí solo. Por extraño que parezca, no parece funcionar cuando trato de usarlo en una gema. Mi gema se llama db_hippo. Agregué rb-readline como una dependencia en mi gemspec, y puse la extensión a RbReadline en lib / db_hippo / rb-readline.rb

module DbHippo
  module RbReadline
    <CASPER'S EXTENSION HERE>
  end
end

Deseo usar la funcionalidad en otro submódulo de DbHippo, DbHippo :: Source. En DbHippo :: Source agregué en la parte superior:

require 'rb-readline'
require 'db_hippo/rb-readline'

Luego, en uno de los métodos de DbHippo :: Source, tengo:

RbReadline.prefill_prompt(query)
query = Readline.readline("Query: ", true)

La variable de consulta definitivamente no está vacía, pero por alguna razón, en este contexto, la solicitud no se completa previamente. También me doy cuenta de que si pongo la extensión en el mismo archivo (lib / db_hippo / rb-readline) sin convertirlo en un submódulo de DbHippo, obtengo el error:constante sin inicializar DbHippo :: Source :: Readline (NameError) en la línea:

query = Readline.readline("Query: ", true)

Todo esto parece tener algo que ver con la denominación adecuada de los módulos, las declaraciones requeridas y las gemas. Esta es la primera gema que he tratado de construir. ¿Alguna idea de lo que está pasando aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta