Two ActiveLDAP questions

Two questions about ActiveLDAP:


Question #1:
When I create an ActiveLDAP::Base object, the dn attribute used in the
mapping does not get an accessor method. For example:

#!/usr/local/bin/ruby
require ‘activeldap’

class Person < ActiveLDAP::Base
ldap_mapping :dnattr => ‘uid’, :prefix => ‘ou=People’
end

ActiveLDAP::Base.connect(
:host => ‘localhost’,
:port => 40003,
:base => ‘dc=cusys,dc=edu’,
:bind_format => ‘uid=admin,dc=cusys,dc=edu’,
:password_block => Proc.new { ‘SecretWord’ },
:allow_anonymous => false
)

for person in Person.find_all(:attribute => ‘givenName’, :value =>
‘Puppy’, :objects => true) do
puts "DN: " + person.dn
puts "CN: " + person.cn[0]
puts "UID: " + person.uid[0]
end

##END CODE

There is definitely a uid attribute in the LDAP. But when I run the
above, I get this:

DN: uid=PBarksalot,ou=People,dc=cusys,dc=edu
CN: Puppy Barksalot
/usr/local/lib/ruby/site_ruby/1.8/activeldap/base.rb:846:in
method_missing': undefined method uid’ for #Person:0xb7565dac
(NoMethodError)
from ./test.rb:24
from ./test.rb:21:in `each’
from ./test.rb:21

When I do a person.inspect, I see a data member called “nil” that
points to the string that should be in “uid”:

…@data={“cn”=>[“Puppy Barksalot”], nil=>[“PBarksalot”],
“sn”=>[“Barksalot”], “objectClass”=>[“top”, “person”,
“organizationalPerson”, “inetorgperson”]}>

Can anyone help me out?


Question #2:

I’m trying to use ActiveLDAP in Rails, just like the above but with the
relevant code snippets distributed to config, models, views and so on.
I can get my application to query the LDAP successfully; a
person.inspect shows all the attributes’ values are returned. However,
none of the accessor methods are created. The collection that should
hold them, @attr_methods, is empty.

Has anyone seen/solved this?

Thanks.

Justin