このプログラムを検討してください
require 'dbi'
handle = DBI.connect('DBI:Mysql:tasks', 'root', 'stupid')
handle.select_all('select * from tasks') do |row|
puts row.inspect
end
rows = handle.select_all('select * from tasks')
puts rows.inspect
への最初の呼び出しにselect_all
はブロックが渡され、それを使用してテーブルの行を反復処理します。これは Ruby の標準的なイテレーションのイディオムなので、もちろん機能します。
2 番目の呼び出しは、配列にパッケージ化された同じデータを一度に返す必要があります。配列に実際に含まれているのは、テーブルの最後の行です。
これはバグですか、それとも何か間違っていますか?