From: Mitsuo KASAHARA Date: 2011-05-11T10:53:53+09:00 Subject: [ruby-list:48084] Re: ruby1.9系でのdbiを使ったselect_allについて 笠原です。 申し訳ありませんでした。本件別の場所で既出でした。 英語がよくわからないので、対応しようとしているのか、 取りあえずこうすりゃ動くよ!的な話をしているのか分からないのですが http://rubyforge.org/tracker/index.php?func=detail&aid=28624&group_id=234&atid=967 にある module DBI class Row if RUBY_VERSION =~ /^1\.9/ def dup row = super row.instance_variable_set :@arr, @arr.dup row end end end end をコードの先頭の方にコピペしたら、動くようになりました。 お騒がせして申し訳ありませんでした。 2011年5月10日18:57 Mitsuo KASAHARA : > 笠原です。 > > 時刻情報の計算の時は、本当に助かりました。 > > 無事動くコードが出来て、せっかくなので最新の1.9系でも動かしてみようかと思った > のですが、dbiを使ってDBにアクセスするところで1.8系と1.9系で挙動が異なり > つまずいてしまっております。 > > [root@fedora work]# cat test.rb > require 'rubygems' > require 'dbi' > > dbh = DBI.connect("DBI:SQLite3::memory:") > dbh.do("CREATE TABLE t1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT );") > dbh.do("INSERT INTO t1 (name) VALUES ('name1') ;") > dbh.do("INSERT INTO t1 (name) VALUES ('name2') ;") > rows = dbh.select_all("SELECT * FROM t1;") > p rows > [root@fedora work] > > というテスト用のコードで > > [root@fedora work]# /usr/bin/ruby -v > ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-linux] > [root@fedora work]# /usr/bin/ruby test.rb > [[1, "name1"], [2, "name2"]] > [root@fedora work] > > と1.8系で実行すると私の欲しい結果が得られるのですが > > [root@fedora work]# /usr/local/ruby/bin/ruby -v > ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux] > [root@fedora work]# /usr/local/ruby/bin/ruby test.rb > [[2, "name2"], [2, "name2"]] > [root@fedora work]# > > と1.9.2をダウンロードしてきてコンパイルすると上手く動きません。 > なんで同じ結果が2つ出てくるの??? > #自力ソースコンパイルにはこだわっていないので、fedora14に入るrpmパッケージが >  あればそれを突っ込むことは何ら問題ないです。私が見つけられなかっただけです。 > > そもそも、rubyのコンパイルに失敗しているのか、私のコードが1.9用のコードとして > 正しくないのか、何が悪いのか???という状態なのですが、 > 再度皆様のお知恵を拝借出来ませんでしょうか。 > > -- > かさはら みつお > > -- かさはら みつお