浦島投稿です。下のソースの動作がRubyのバージョンによって異なっているようで,
解決できればと思ってお尋ねします。
#! /usr/bin/env ruby
require "readline"
hist = Readline::HISTORY
items = ["aaa","bbb","ccc","dddd","ee"]
items.each {|item| hist << item}
puts "項目を選んでEnter"
hist.each{|e| puts e }
selected = Readline.readline("> ", true)
p selected
ruby --version
ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
こちらでは,実行すると
項目を選んでEnter
aaa
bbb
ccc
dddd
ee
> dddd
"dddd"
のように,Ctrl-P などでヒストリの配列 items を遡って selected
に取り込めます。
これを便利に活用していました。
ところが,
ruby --version
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
だと,
項目を選んでEnter
aaa
bbb
ccc
dddd
ee
>
のようにプロンプトを出してくれますが,配列の要素を拾ってくれず,見ながら直接入力して
やるしかありません。
Ruby 2.7 と 3.0 の仕様変更でこうなっているのかどうか。2.7
でできたことを3.0で可能にする方法
がないのかと気になっています。ご存知の方がおられたら教えていただけるとうれしいです。
小波秀雄