Prompt pré-preenchido em Ruby [duplicado]

Esta questão já tem uma resposta aqui:

O que vai me dar algo como ruby ​​readline com um valor padrão? 5 respostas

Eu estou usando para Ruby para escrever um pequeno utilitário de linha de comando para pesquisar Pubmed. No momento, solicito ao usuário uma consulta e exibo os resultados, e o usuário tem a opção de anexar à consulta ou inserir uma consulta totalmente nova. Gostaria de adicionar a capacidade de editar a consulta atual; ou seja, o prompt deve vir pré-preenchido com uma versão editável da consulta anterior, da seguinte forma:

Enter query: <PREVIOUS QUERY HERE>

É fácil imprimir a consulta anterior ao lado do prompt, mas como posso tornar essa saída editável, como se o usuário tivesse digitado ela mesma?

@casper: Obrigado pela resposta Casper. Eu tentei o código que você forneceu abaixo, e ele realmente funciona por conta própria. Estranhamente, parece que não funciona quando tento usá-lo em uma gema. Minha gema é chamada db_hippo. Eu adicionei o rb-readline como uma dependência no meu gemspec, e eu coloquei a extensão para RbReadline em lib / db_hippo / rb-readline.rb

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

Desejo usar a funcionalidade em outro submódulo do DbHippo, DbHippo :: Source. Em DbHippo :: Source eu adicionei no topo:

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

Então, em um dos métodos do DbHippo :: Source, eu tenho:

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

A variável de consulta definitivamente não está vazia, mas por algum motivo, neste contexto, o prompt não é pré-preenchido. Eu também noto que se eu coloco a extensão no mesmo arquivo (lib / db_hippo / rb-readline) sem torná-lo um submódulo de DbHippo, recebo o erro:constante não inicializada DbHippo :: Source :: Readline (NameError) na linha:

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

Tudo isso parece ter algo a ver com a nomeação apropriada de módulos, requerer instruções e gemas. Esta é a primeira jóia que eu tentei construir. Alguma ideia do que está errado aqui?

questionAnswers(2)

yourAnswerToTheQuestion