DRB时mixin的疑惑,是个bug?

还记得我原来的帖子吗?
http://www.iteye.com/topic/156641

现在发现有个比较灵异的现象。
DRB+mixin时会有出乎我意料的行为。

server:
require 'drb'
require 'module_a'

class ServerHello   
	include TestModule1
  def sayHello    
    puts 'I am server'    
  end  
end
DRb.start_service("druby://127.0.0.1:2222", ServerHello.new)
DRb.thread.join


client:
require 'drb' 
require 'module_a' 
include TestModule1
DRb.start_service  
info = DRbObject.new(nil, "druby://127.0.0.1:2222")      
info.sayHello()  
info.sayHello2 

module_a:

require 'drb'
module TestModule1
	def sayHello2
		puts "who am i"
	end
end


这3个文件在同一个目录时,先执行server.rb,再执行client.rb。结果是:
server.rb输出
I am server
clietn.rb输出
who am i
而不是我想要的 server.rb同时输出:
I am server
who am i

“info.sayHello2” 这句话居然是在本地调用的,而不是server端。
(或者更确切的说是client调到server,server再回调到client的sayHello2方法。因为假如把puts "who am i" 修改成 puts self, 输出是DRbObject)

如果我把client端的“include TestModule1”注释调,那么行为是正常的。

但是这不是我想要的,因为某些server端和client端公用的lib就是要被大家一起include的。

怎么说info.sayHello2 也不应该调用本地的呀

你可能感兴趣的:(thread)