Hi, > Apparently I didn't strip all I could strip from the previous example. > This is the bare bones of the problem: the last line returns false > instead of the expected true. Am I misunderstanding something basic > about the way DRb works? Maybe passing ``self'' in Client.login does > not really pass a reference to self, so it does not match when it is > later compared in Client.online? ? It's a equivarent problem. Please, try the 'drb/eq' module. > #!/usr/bin/env ruby > > require 'drb' require 'drb/drb' require 'drb/eq' > class Server > def initialize > @users = [] > end > def register(user) > @users.push user unless @users.include?(user) > end > def online?(user) > @users.include?(user) > end > end 'drb/eq' defines DRbObject#== method. FYI, drb-1.3.3b's 'drb/eq' has hash, and eql? methods. (drb-1.3.3b: URL:http://www.ruby-lang.org/~knu/cgi-bin/cvsweb.cgi/lib/drb/lib/drb/) --- drb/eq, drb-1.3.3b --- module DRb class DRbObject def ==(other) return false unless DRbObject === other (@ref == other.__drbref) && (@uri == other.__drburi) end def hash [@uri, @ref].hash end alias eql? == end end SeKi.