From: Geert Fannes Date: 2006-05-05T20:27:17+09:00 Subject: dRuby connection refused between two different machines Hello, I have been playing with dRuby and am getting strange differences with passing DRbUndumped-objects from a client machine to a DIFFERENT server and calling methods on this object: I wrote a small server that basically accepts an object and does something with this (calling its instance method "name"): #server code require("drb") class Server def receiveSomething(job) puts("receiving something") puts job.name end end DRb.start_service("druby://:1234",Server.new) DRb.thread.join The client code defines the class "Something" which has the instance method "name". I want to pass an object of class "Something" to the server BY REFERENCE, so I added "include DRbUndumped" in its definition: #client code require("drb") class Something include DRbUndumped def name return "MyName" end end DRb.start_service server=DRbObject.new(nil,'druby://localhost:1234') server.receiveSomething(Something.new) All goes well ONLY IF THE SERVER AND THE CLIENT ARE RUN FROM THE SAME MACHINE: server output: receiving something MyName If I start the server code on a DIFFERENT machine (same OS (slackware 10.2), same ruby version (1.8.4)) and replace "localhost" with the server machine name in the client code, the server gives as output: receiving something and the client crashes with this message: (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:733:in `open': druby://localhost:32816 - # (DRb::DRbConnError) from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:726:in `open' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1186:in `initialize' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1166:in `open' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1082:in `method_missing' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1100:in `with_friend' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1081:in `method_missing' from (druby://ivon:1234) as.rb:5:in `receiveSomething' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform_without_block' ... 6 levels... from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1344:in `initialize' from (druby://ivon:1234) /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start_service' from (druby://ivon:1234) as.rb:8 from ac.rb:10 I've tested all dRuby examples using DRbUndumped that I could find and they all work on one machine, but crash when trying to use them on two different machines (what's the point of having a distributed environment that works only on one machine :-)). My client code CAN find the server correctly when using two different machines since it says "receiving something", so these errors have nothing to do with firewall settings or something, problems start when calling methods on objects that are passed by reference. Maybe there are some ruby security settings that I have wrong, but I have no clue which ones. All help is very appreciated, especially with working examples! Greetings, Geert Fannes.