[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

ruby-ldap: uninitialized constant LDAP::LDAP_CONTROL_PAGEDRESULTS

James Hughes

12/13/2005 6:41:00 PM

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 Hughes
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC


4 Answers

Berger, Daniel

12/13/2005 7:12:00 PM

0

James Hughes 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


James Hughes

12/13/2005 9:50:00 PM

0

On 12/13/05, Daniel Berger <Daniel.Berger@qwest.com> wrote:
> James Hughes 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.

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 Hughes
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC


Berger, Daniel

12/13/2005 10:51:00 PM

0

James Hughes wrote:
> On 12/13/05, Daniel Berger <Daniel.Berger@qwest.com> wrote:
>
>>James Hughes 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.
>
>
> 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


James Hughes

12/13/2005 11:47:00 PM

0

On 12/13/05, Daniel Berger <Daniel.Berger@qwest.com> 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 Hughes
Web application developer
Centre for Health Services and Policy Research
Vancouver, BC