2008/1/30 yangpeng <edge_hh / hotmail.com>: > I found a strange thing when I include a module to a Drb object. > I'm confused. > > module_a.rb: > > require 'drb' > module TestModule1 > def sayHello2 > puts "who am i" > end > end > > server.rb: > > 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.rb: > > require 'drb' > require 'module_a' > include TestModule1 > DRb.start_service > info = DRbObject.new(nil, "druby://127.0.0.1:2222") > info.sayHello() > info.sayHello2 > > The three files in one path, I run server.rb first, then client.rb. > The result is > > server.rb output: > I am server > > client.rb output: > who am i > > But my expected result is: > > server.rb output both "I am server" and "who am i" > > the "sayHello2" is executed in local, not remote. (or exactly, it's "client invoke server, server invoke client backly", > for if we changed "puts "who am i"" to "puts self", the result is "DRbObject") > If I comments the "include TestModule1" of client.rb, the result is good. > But this is not I want, for there are many standard code share between server and client. > It's it a defect or my usage error Wow, this is surprising. I would really appreciate some enlightenment by somebody more experienced with DRB, but I would call this a bug. Daniel Brumbaugh Keeney