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 也不应该调用本地的呀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值