
浦島投稿です。下のソースの動作が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で可能にする方法 がないのかと気になっています。ご存知の方がおられたら教えていただけるとうれしいです。 小波秀雄