ruby-ldap
ruby-ldap copied to clipboard
ruby-ldap gem not work in rails3 app, but works in rails console
I want to build a rails3 website authed with LDAP, so I chose ruby-ldap gem (not net/ldap) which we used in our old rails2 apps and works very well.
But I keep on getting weird error in rails3 app, See the codes below:
require 'ldap'
class WelcomeController < ApplicationController
def index
begin
@test = LDAP::Conn.new('10.72.64.11', 389)
rescue LDAP::Error
p LDAP::Error
end
render :text => "ok"
end
end
welcome#index is my root route. Most time, the app crashes when going to LDAP::Conn.new('10.72.64.11', 389), even I tried to use "pry" to debug and track, throwing
[1] 24797 trace trap rails s
and the WEBrick server will be terminated right that time.
Sometimes it throws another type error when I use "pry" to step,
#<NameError: uninitialized constant WelcomeController::LDAP>
While try it in the console, everything goes well.
1.9.3-p194 :001 > require 'ldap'
=> true
1.9.3-p194 :002 > @test = LDAP::Conn.new('10.72.64.11', 389)
=> #<LDAP::Conn:0x00000101289568>
1.9.3-p194 :003 >
I am using rails 3.2.8
I got the same error using Webrick. Using Unicorn worked though... maybe it has to do with threading?
Yes, it seems to be a threding problem, because of linking against libldap. I get seg faults when used with puma. See issue https://github.com/bearded/ruby-ldap/issues/13 and pull https://github.com/bearded/ruby-ldap/pull/28