[#35937] WeRDS (the Weekly Ruby-Doc Summary) 2002-09-13 — maili31s@... (SugHimsi == SUGIHARA Hiroshi)

すぎむし。

14 messages 2002/09/16
[#36004] WeRDS (the Weekly Ruby-Doc Summary) 2002-09-22 — maili31s@... (SugHimsi == SUGIHARA Hiroshi) 2002/09/25

すぎむし%くどいようですが、うるさければ謹慎しますので。

[#35940] 9.2 の数値が 9.199999999999999 — "Inoue" <rubyist@...1.117.ne.jp>

井上です。

16 messages 2002/09/17
[#35941] Re: 9.2 の数値が 9.199999999999999 — matz@... (Yukihiro Matsumoto) 2002/09/17

まつもと ゆきひろです

[#35942] Re: 9.2 の数値が 9.199999999999999 — Fujimaru Hiroyasu <f-hiro@...> 2002/09/17

 藤丸です。

[#35977] [ANN] Exerb 2.1.0 — Yuya Kato <yuya-ml@4th.to>

Yuyaです。

18 messages 2002/09/20
[#35978] Cookie — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/09/20

金光です。どもっ (_ _)

[#35979] Re: Cookie — rio-t@... 2002/09/20

こんにちは、高石です。

[#35980] Re: Cookie — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/09/20

金光です。どもっ。

[ruby-list:35983] Re: Cookie

From: rio-t@...
Date: 2002-09-21 11:04:42 UTC
List: ruby-list #35983
こんにちは、高石です。

From: 金光雅夫 (KANEMITSU Masao) <masao-k@a-net.email.ne.jp>
Subject: [ruby-list:35982] Re: Cookie

> > ソースを見たのですがFileStoreはCGI::Sessionのインナークラスで、
> > ここで言う'database_manager'と言うのはCGI::Session専用の物ですね。
> > 
> > PStoreを利用することも可能だと思いますが、インターフェースが
> > 異なるためFileStoreと同じインターフェースで扱えるように
> > 接続用のクラスを独自に定義する必要がでてきます。
> 
> うがが。

FileStoreを参考に(というかほぼそのまま流用)作ってみました。
sess = CGI::Session.new(cgi, "database_manager" => PileStore)
などとして使ってみて下さい。
# クラス名適当;-P

class PileStore
  require 'pstore'

  def check_id(id)
    /[^0-9a-zA-Z]/ =~ id.to_s ? false : true
  end

  def initialize(session, option={})
    dir = option['tmpdir'] || ENV['TMP'] || '/tmp'
    prefix = option['prefix'] || ''
    id = session.session_id
    unless check_id(id)
      raise ArgumentError, "session_id `%s' is invalid" % id
    end
    path = dir+"/"+prefix+id
    path.untaint
    @db = PStore.new(path)
  end
  
  def restore
    unless @hash
      @db.transaction do
        @hash = if @db.root?('hash')
                  @db['hash']
                else
                  {}
                end
      end
    end
    @hash
  end

  def update
    return unless @hash
    @db.transaction do
      @db['hash'] = @hash
    end
  end

  def close
    update
  end

  def delete
    File::unlink @db.path
  end
end

じっくりソースを追ってないので、不具合があるかもしれません。
一応、簡単なテストで sess['hoge'] = foo としたものが、次の実
行時にsess['hoge']で無事に取り出せることだけ確認しました。
/--------------------------------------------------------/
  高石 勇人 < 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
/--------------------------------------------------------/

In This Thread