From: TAKAISHI Hayato Date: 2004-01-16T01:17:25+09:00 Subject: [ruby-list:39048] Ruby/MySQLのquery() こんにちは、高石です。 Ruby/DBIのMySQL用ドライバで、MySQL/RubyのかわりにRuby/MySQL を使えないものかと考え、試してみたところ、MySQL#query()の挙 動が違うためにエラーになってしまいました。 @field_count == 0 の時に、MySQL/Rubyでは nil を返すのに対し て、Ruby/MySQLでは self を返すのが原因で、Ruby/DBIのMySQL用 ドライバは、query()の返り値が偽でない場合に、その値に対して freeメソッドを実行しようとするため、MySQL#free()を実行しよう としてNoMethodErrorになります。 とりあえず、以下のようにMySQL/Rubyと同じ挙動にしてやればよさ そうですが、他の部分をちゃんと見てないので、別の所で何か問題 があるかもしれません。 一応、Ruby/DBI 0.0.21 と組合せて、単純なinsertやselect等を行っ てみた限りでは問題なく動いているようです。 ruby-mysql-0.2.3a に対するパッチです。 % diff -u mysql.rb.org mysql.rb --- mysql.rb.org 2004-01-11 22:37:44.000000000 +0900 +++ mysql.rb 2004-01-16 00:28:46.000000000 +0900 @@ -272,10 +272,13 @@ def query(query) real_query query - if @query_with_result and @field_count != 0 then - return store_result + if not @query_with_result then + return self end - self + if @field_count == 0 then + return nil + end + store_result end def refresh(r) /--------------------------------------------------------/ 高石 勇人 < rio-t@presen.to > PGP Key(RSA): http://rio-t.presen.to/pgp/mykey.asc (DSS): http://rio-t.presen.to/pgp/mykey-dss.asc /--------------------------------------------------------/