I've been tearing my hair out the last few days trying to track down  
a bug in a gem that turns out to live in DRb. The gem is 'reliable- 
msg' and it relies on DRb for rpc (I've cc'ed the author too).

I am not a good enough rubyist to track the problem all the way to  
its true source, but I do have a simple test case to reproduce the  
bug. Plus, there's a simple work around (look at the comments in the  
server sample code).

As near as I can tell, this only breaks on OSX (OSX 10.4.6, ruby  
1.8.4, DRb 2.0.4).

The error concerns ACL handling and how 127.0.0.1/localhost is  
interpreted (maybe an ipv6 prob?). Doing a 'netstat -an|grep 9000'  
while the following code is run shows:
tcp6       0      0  ::1.9000               *.*                     
LISTEN

With apologies to Eric Hodel from whom I borrowed some code, here are  
the samples:

------ SERVER --------
#!/usr/bin/env ruby -w
# simple_service.rb
# A simple DRb service

# load DRb
require 'drb'
require 'drb/acl'

# start up the DRb service
DRb.start_service   'druby://localhost:9000',
                     [],
                     :tcp_acl => ACL.new('allow 127.0.0.1'.split("  
"), ACL::ALLOW_DENY) # <-- causes failure
                     #:tcp_acl => ACL.new('allow localhost'.split("  
"), ACL::ALLOW_DENY)  <-- works
                     # works if you replace 127.0.0.1 with localhost

# wait for the DRb service to finish before exiting
DRb.thread.join
-------------

--------- CLIENT ---------
#!/usr/bin/env ruby -w
# simple_client.rb
# A simple DRb client

require 'drb'

# attach to the DRb server
remote_array = DRbObject.new nil,
                              'druby://localhost:9000'

puts remote_array.size

remote_array << 1

puts remote_array.size
-------------

The error displayed by the client is:

~/developer/projects/ruby/bugs/drb-acl cremes$ ruby -w  
simple_client.rb druby://localhost:9000
/opt/local/lib/ruby/1.8/drb/drb.rb:567:in `load': connection closed  
(DRb::DRbConnError)
         from /opt/local/lib/ruby/1.8/drb/drb.rb:629:in `recv_reply'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:918:in `recv_reply'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1192:in `send_message'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1083:in  
`method_missing'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1167:in `open'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1082:in  
`method_missing'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1100:in `with_friend'
         from /opt/local/lib/ruby/1.8/drb/drb.rb:1081:in  
`method_missing'
         from simple_client.rb:13