drb problem? ringy-dingy won't answer...

The following code works fine as long as I don't try to run it through the distributed server. It doesn't get there... It runs fine out of delayed_job, runs fine if called directly. But if 'distrib' is true (the default) it runs right up to the call to the server and right past it without getting to the server or raising any errors.

Am using Ruby 1.8.6.26 , Ringy-Dingy 1.2.1, dj 1.8.4.

*********The server: require 'rinda/ring' class ScriptServer   include DRbUndumped   attr_accessor :result   def run(fullScript)     myTS = Time.now.strftime("%Y%m%d%H%M%S")     msg = "===> Starting #{scriptname} in run #{scriptrun} on #{scriptenv} at #{myTS}"     puts msg     @result = "***#{scriptname} Launched [#{scriptlaunch}]"     rslt = fullScript.run     @result << rslt     msg = "#{scriptname} Completed [#{Time.now.strftime("%Y%m%d%H%M %S")}]"     @result << "***#{msg}"   rescue     @result << "#{scriptname} Aborted [#{Time.now.strftime("%Y%m%d%H%M %S")}] \n #{$!} \n #{caller.to_yaml}"   ensure     return @result   end end DRb.start_service myPid = Process.pid.to_s puts myPid ring_server = Rinda::RingFinger.primary ring_server.write([:name,                 :ScriptServer,                    ScriptServer.new(),                    "ScriptServer #{myPid}"],                    Rinda::SimpleRenewer.new) DRb.thread.join

******** The worker/client require 'active_support' require 'drb'

class ScriptWorker

  attr_accessor :script_id   attr_accessor :run_id   attr_accessor :distrib

  def initialize( script_id, run_id, distrib = true )     self.script_id = script_id     self.run_id = run_id     self.distrib = distrib     @myLog = ''   end

  def perform     myScript = Script.find(script_id) # left out setting of variables used below...

    require "#{myRoot}/script/#{myScript.name}"

    fullScript = Object.const_get(myClass).new( myScript, myRun, runenv, myURI, myRoot )

   if self.distrib       require 'rinda/ring'       DRb.start_service       ring_server = Rinda::RingFinger.primary       service = ring_server.take([:name, :ScriptServer, nil, nil])       server = service[2]       result = server.run(fullScript)       puts result    else       result = fullScript.run       puts result    end     @myLog.close   end

  def init_my_log( name ) ...   end end

******** The parent script class require 'rubygems' require 'util1' require 'drb'

class ScriptMain

  currDir = Dir.pwd

  include Util1   include DRbUndumped

  def initialize( aScript, aRun, runenv, myURI, myRoot )     @myScript = aScript     @myId = @myScript.id     @myName = File.basename(@myScript.name, "*.rb")     @usecase = @myName     @myRun = aRun     @myRoot = myRoot     @rootDir = "#{RAILS_ROOT}"     @launch = aRun.launched     @runenv = runenv     @myURI = myURI     @runid = aRun.id     @optionStrg = aRun.options     @myBrowser = ''     @myHwnd = 0

  end end

**********a sample child script class (Just the run method. bunch of other methods in full script)

class SearchTest < ScriptMain

  def run( limit = 5.minutes )     begin       puts '&*&*&* I am here *&*&*&'       @runenv = 'WEB'       open_log(@myName, @rootDir, @myRoot, @launch, @start,                @myId, @runenv, @usecase, @runid, @optionStrg )

      mark_testlevel('Test Parent', 7) # Module       mark_testlevel('Test Child', 6) # SubModule

      @myBrowser = Watir::IE.new_process       @myHwnd = @myBrowser.hwnd       lookup('Google')       emaillogin(@myBrowser, @service, @username, @password)       logout(@myBrowser)

    rescue       log_message(FATAL, "(#{__LINE__}) #{$!}", @@fail)       raise     ensure       create_flag_file(Time.new.to_f.to_s, 'parse' ) unless @runid == '99999'       close_log(@myName, __LINE__)     end   end #def

end