2011年5月11日

[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 <m.kasahara13@xxxxx>:
> 笠原です。
>
> 時刻情報の計算の時は、本当に助かりました。
>
> 無事動くコードが出来て、せっかくなので最新の1.9系でも動かしてみようかと思った
> のですが、dbiを使ってDBにアクセスするところで1.8系と1.9系で挙動が異なり
> つまずいてしまっております。
>
> [root@xxxxx 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@xxxxx work]
>
> というテスト用のコードで
>
> [root@xxxxx work]# /usr/bin/ruby -v
> ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-linux]
> [root@xxxxx work]# /usr/bin/ruby test.rb
> [[1, "name1"], [2, "name2"]]
> [root@xxxxx work]
>
> と1.8系で実行すると私の欲しい結果が得られるのですが
>
> [root@xxxxx work]# /usr/local/ruby/bin/ruby -v
> ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
> [root@xxxxx work]# /usr/local/ruby/bin/ruby test.rb
> [[2, "name2"], [2, "name2"]]
> [root@xxxxx work]#
>
> と1.9.2をダウンロードしてきてコンパイルすると上手く動きません。
> なんで同じ結果が2つ出てくるの???
> #自力ソースコンパイルにはこだわっていないので、fedora14に入るrpmパッケージが
>  あればそれを突っ込むことは何ら問題ないです。私が見つけられなかっただけです。
>
> そもそも、rubyのコンパイルに失敗しているのか、私のコードが1.9用のコードとして
> 正しくないのか、何が悪いのか???という状態なのですが、
> 再度皆様のお知恵を拝借出来ませんでしょうか。
>
> --
> かさはら みつお <m.kasahara13@xxxxx>
>
>

--
かさはら みつお <m.kasahara13@xxxxx>


投稿者 xml-rpc : 2011年5月11日 10:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103844
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。