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