Ruby-ldap: uninitialized constant LDAP::LDAP_CONTROL_PAGEDRE


#1

Hi,

I’m trying to run the pr_ctl example script provided with the 0.9.2
distribution of ruby-ldap. It dies with “./pr_ctl:41: uninitialized
constant LDAP::LDAP_CONTROL_PAGEDRESULTS (NameError)”.

I need to use this control, but I can’t figure out why this is
happening. This constant is mentioned in ldap.c:

#ifdef LDAP_CONTROL_PAGEDRESULTS
rb_define_const (rb_mLDAP, “LDAP_CONTROL_PAGEDRESULTS”,
rb_str_new2 (LDAP_CONTROL_PAGEDRESULTS));
#endif

I’ve installed the source distribution of ruby-ldap in place of the
version that Debian provides. I thought perhaps the script was
accessing an older version of the shared library, but there don’t seem
to be any old versions lying around. I’ve added
/usr/local/lib/site_ruby/1.8/i486-linux (the location of the 0.9.2
shared lib) to /etc/ld.so.conf and run ldconfig: no joy.

Any other ideas on how to debug this?

thanks
jh


James H.
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC


#2

James H. wrote:

I need to use this control, but I can’t figure out why this is
happening. This constant is mentioned in ldap.c:

#ifdef LDAP_CONTROL_PAGEDRESULTS
rb_define_const (rb_mLDAP, “LDAP_CONTROL_PAGEDRESULTS”,
rb_str_new2 (LDAP_CONTROL_PAGEDRESULTS));
#endif

That’s a bug. Replace rb_str_new2 with INT2NUM.

Regards,

Dan


#3

On 12/13/05, Daniel B. removed_email_address@domain.invalid wrote:

That’s a bug. Replace rb_str_new2 with INT2NUM.

Done, rebuilt the .so, no joy. Same error. I have verified that the
script is loading the correct shared lib by temporarily renaming it,
which causes the script to die at “require ‘ldap’”.

As I was about to send this response some of my gcc/make fu started
returning to me, and I added “-DLDAP_CONTROL_PAGEDRESULTS” to the
CPPFLAGS in the Makefile. Should have thought of that first.

But now the script dies with
“in `initialize’: wrong argument type Fixnum (expected String)
(TypeError)”

This is the offending line:
control = LDAP::Control.new(LDAP::LDAP_CONTROL_PAGEDRESULTS,
ber_string,
critical )

Anyone familiar with ruby-ldap know what’s going on?

thanks,
jh

jh


James H.
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC


#4

On 12/13/05, Daniel B. removed_email_address@domain.invalid wrote:

rb(main):001:0> require “ldap”
=> true
irb(main):002:0> LDAP::LDAP_CONTROL_PAGEDRESULTS
=> “1.2.840.113556.1.4.319”

Perhaps it’s just not defined with your particular version of ldap?

Of course. Don’t know why I thought ruby-ldap would define this
somewhere. Time to upgrade from openldap 2.2.26 I guess.
jh


James H.
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC


#5

James H. wrote:

            rb_str_new2 (LDAP_CONTROL_PAGEDRESULTS));

#endif

That’s a bug. Replace rb_str_new2 with INT2NUM.

Done, rebuilt the .so, no joy.

Whoops, that’s not a bug. It’s a string after all. Change that back to
rb_str_new2.

rb(main):001:0> require “ldap”
=> true
irb(main):002:0> LDAP::LDAP_CONTROL_PAGEDRESULTS
=> “1.2.840.113556.1.4.319”

Perhaps it’s just not defined with your particular version of ldap?

Regards,

Dan