On Aug 25, 2006, at 9:23 AM, Philippe Lang wrote:

> ara.t.howard / noaa.gov wrote:
>> On Fri, 25 Aug 2006, Philippe Lang wrote:
>>
>>> obj = DRbObject.new(nil, 'druby://localhost:9000')
>>>
>>> g = obj.find(1)
>>> puts "#{g.id} | #{g.name}"
>>> g.flowers.each do |f|
>>>  puts "#{f.id} | #{f.garden_id} | #{f.name}"
>>> end
>>> ------------------------------------------------------
>>>
>>>
>>> ... I get:
>>>
>>> ------------------------------------------------------
>>> ar_client.rb:8: warning: Object#id will be deprecated; use
>>> Object#object_id 67884862 | garden1
>>> ar_client.rb:10: warning: Object#id will be deprecated; use
>>> Object#object_id 67882632 | 1 | flower1
>>> ar_client.rb:10: warning: Object#id will be deprecated; use
>>> Object#object_id 67880122 | 1 | flower2
>>> ------------------------------------------------------
>>
>> certain methods are treated specially by drb.  it was a
>> mistake for rails to override Object#id for exatly this kind
>> of scenario - many peice of code require it.
>>
>> you need to do something like
>>
>> class << ActiveRecord
>>    alias "id__", "id"
>> end
>
> Hi,
>
> Thanks for your answer. I see now where the problem comes from, but  
> your "trick" is apparently not sufficient. The code...
>
> class Garden < ActiveRecord::Base
>   include DRbUndumped
>   has_many :flowers
>   alias :id__ :id
> end
>
> class Flower < ActiveRecord::Base
>   include DRbUndumped
>   belongs_to :garden
>   alias :id__ :id
> End
>
> ... Still does not work...


Hey Philip-

	I have dealt alot with ActiveRecord over drb, I use it in this  
plugin for rails[1] . The way around this is to use a different  
notation to get the id of the AR object.  So with your client example  
change it to this and you will be fine:

#!/usr/local/bin/ruby
require 'drb'

DRb.start_service()
obj = DRbObject.new(nil, 'druby://localhost:9000')

g = obj.find(1)
puts "#{g[:id]} | #{g.name}"
g.flowers.each do |f|
   puts "#{f[:if]} | #{f[:id]} | #{f.name}"
end

	So by using arinstance[:id] instead of arinstance.id you will avoid  
this problem all together.

Cheers-
-Ezra

[1] http://backgroundrb.rubyforge.org