[僕] 2005年06月19日 アーカイブ

僕ト云フ事

たろマークはてなブックマーク

2005年06月19日

[cgi][perl][session] CGI::Session::MySQL で、使用するテーブルを変更する。

普通に、CGI::Session で、MySQL 使ってるときにデフォルトと違うテーブル名を使いたい場合は、

$CGI::Session::MySQL::TABLE_NAME = 'hoge';

とかやればできるけど、CGI::Application::Plugin::Session 経由で変更できないっぽい。cgiapp_init() でやっても setup() でやってもデフォルトに上書きされる。Plugin の仕組みを追えば分かりそうだけど、とりあえず別な方法を模索。
CGI::Session::PostgreSQL だと、

$session = new CGI::Session("driver:PostgreSQL", undef,
                                                {Handle=>$dbh, TableName=>'my_sessions'});

って指定できるので、CGI::Session::MySQLでもやりたい。
ということで、CGI::Session::MySQL の patch。

*** MySQL.pm.org	2005-06-20 22:27:17.000000000 +0900
--- MySQL.pm	2005-06-20 22:30:56.000000000 +0900
***************
*** 126,131 ****
--- 126,135 ----
  
      }
      
+     if ( defined $args->{TableName} ) {
+         $TABLE_NAME = $args->{TableName};
+     }
+     
      require DBI;
  
      $self->{MySQL_dbh} = $args->{Handle} || DBI->connect(

さて、作者さんに patch を送りつけてやりたいけど、英語が不安だ('A`)