Drb session problem

C

Carl Youngblood

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top