Index: [Article Count Order] [Thread]

Date:  Fri, 15 Feb 2002 12:00:52 +0900
From:  Takashi Matsuo <t-matsuo@...>
Subject:  ruby-dbiの使い方
To:  modruby-ja@...
Message-Id:  <20020215120052.104dd193.t-matsuo@...>
X-Mail-Count: 00275


始めまして松尾と申します。

mod_ruby,erubyを使い始めました。
mod_rubyでのdbiの使い方について、お聞きしたいと思います

下記は簡単なチャット用cgiですが、
データベースハンドラの使い方でもうすこしうまい方法は無いでしょうか?
今はとりあえず、Chat::write Chat::viewの両者で@@dbhを共有できている
(つもり)ですが、クラスが増えた時に、別クラスからもハンドラを共有
するには、どうすればよいでしょうか?
ruby自体はじめてなので、間抜けなことをしてるかも知れませんが、
何か気づいた点があれば、それも教えて頂けると大変ありがたいと
思います。
----------------
require 'cgi'
require 'dbi'
require 'kconv'

class Chat
 @@dbh = DBI.connect("DBI:Mysql:chat", "username", "password")
end

def Chat::disconnect
  @@dbh.disconnect
end

def Chat::write(name, message)
  unless (@@dbh.ping) then
   @@dbh = DBI.connect("DBI:Mysql:chat", "username", "password")
  end
  #@@dbhを使ってdbに書き込みする
end

def Chat::view(name)
  unless (@@dbh.ping) then
   @@dbh = DBI.connect("DBI:Mysql:chat", "username", "password")
  end
  #@@dbhを使ってデータを取り出して表示する
end

begin
 cgi = CGI::new
 name = cgi['name'][0]
 message = cgi['message'][0]
 if (name and message and name.length > 0 and message.length >0) then
  Chat::write(name, message)
 end
 Chat::view(name)
ensure
 Chat::disconnect
end
----------------
--
Takashi Matsuo
t-matsuo@...