From: Carl Youngblood Date: 2003-12-25T05:46:56+09:00 Subject: Drb session problem I'm using DRb for my CGI session store class, as described on the Ruby Garden wiki here: http://www.rubygarden.org/ruby?FCGIRubySessionHandling I've created the session DRbStore class pretty much exactly as it is there. Just to be precise, here is my DRbStore class: ------------------------------ require 'cgi/session' require 'drb' class CGI class Session class DRbStore DRb.start_service @@session_data = DRbObject.new(nil, 'druby://localhost:9192') def initialize(session, option=nil) @session_id = session.session_id end def restore @h = @@session_data[@session_id] || {} end def update @@session_data[@session_id] = @h end def close end def delete @@session_data.delete(@session_id) end end end end ---------------------- And here is the DRb daemon that the DRbStore class accesses: ------------------------- # This is a session storage daemon which can be shared by multiple FCGI # processes. It's just a hash which is enabled for DRb access. require 'drb' session_data = Hash.new DRb.start_service("druby://127.0.0.1:9192", session_data) DRb.thread.join -------------------------- And here is how I'm instantiating it: -------------------------- @sess = CGI::Session.new(@cgi, 'database_manager' => CGI::Session::DRbStore) -------------------------- That seems to succeed just fine, as long as I have the session daemon running, of course. And then when I try to access a session variable like this: somevar = @sess['data'] I get the following error (with stack trace): .... /usr/local/lib/ruby/1.8/cgi/session.rb:80:in `[]' /usr/local/lib/ruby/1.8/drb/drb.rb:407:in `method_missing' /usr/local/lib/ruby/1.8/drb/drb.rb:451:in `open' /usr/local/lib/ruby/1.8/drb/drb.rb:451:in `new' /usr/local/lib/ruby/1.8/drb/drb.rb:468:in `initialize' /usr/local/lib/ruby/1.8/drb/drb.rb:163:in `open' /usr/local/lib/ruby/1.8/drb/drb.rb:163:in `each' /usr/local/lib/ruby/1.8/drb/drb.rb:170:in `open' druby://linux:35269 - # It's like the daemon is returning an instance of DRbStore, instead of the hash it is supposed to contain. Does anybody have any idea of what might be going wrong? Thanks, Carl Youngblood