かわじ、です


Mysql クラスのサブクラスの initialize に、必要な引数を渡しても

  MysqlError: No Database Selected

となるのですが、こういうものなのでしょうか?


具体的には、通常通りに Mysql クラスを使う場合は、問題はありません。

>> db = Mysql.new(nil, 'my_user', 'my_pass', 'my_db')
=> #<Mysql:0x4019ebe4>
>> db.query('select count(*) from my_table')
=> #<MysqlRes:0x4019aa80>


しかし、Mysql のサブクラスの initialize に引数を渡すと、
「データベースが選択されていない」となります。

>> class DB < Mysql
>>   def initialize
>>     super(nil, 'my_user', 'my_pass', 'my_db')
>>   end
>> end
=> nil
>> db = DB.new
=> #<DB:0x4016f5ac>
>> db.query('select count(*) from my_table')
MysqlError: No Database Selected
        from (irb):8:in `query'
        from (irb):8


これは、Mysql クラスそのものを変更しても同様です。

>> class Mysql
>>   alias origin_initialize initialize
>>   def initialize
>>     origin_initialize(nil, 'my_user', 'my_pass', 'my_db')
>>   end
>> end
=> nil
>> Mysql.new.query('select count(*) from my_table')
MysqlError: No Database Selected
        from (irb):8:in `query'
        from (irb):8


願わくは、このような形でもデータベースに接続したいと思っています。


環境は、

$ ruby --version
ruby 1.8.0 (2003-08-19) [i686-linux]

$ /usr/libexec/mysqld --version
/usr/libexec/mysqld  Ver 3.23.56 for pc-linux on i686

で、MySQL/Ruby は 2.4.5 です。