Rubyでldapライブラリが利用できない

このQ&Aのポイント
  • Rubyでldapを利用したいと思っているのですがうまくいかず悩んでいます。
  • ruby-ldap.x.x.x.tar.gzをダウンロードしましたが、接続時に"uninitialized constant LDAP (NameError)"というエラーが出ます。
  • 書籍やWEBを参考にしてスクリプトを組んだのですが、トレースできず問題の解決に困っています。お分かりの方がいらっしゃれば教えてください。
回答を見る
  • ベストアンサー

ruby ldapライブラリが利用できない

Rubyでldapを利用したいと思っているのですがうまくいかず悩んでいます。 下記よりruby-ldap.x.x.x.tar.gz をダウンロードしました。 ※最新のバージョン以外も試しています。 <http://ruby-ldap.sourceforge.net/> #!/usr/bin/ruby require "ldap"  ←/usr/lib/ruby/1.8/netldap.rb を指定 LDAP::Conn.new($ホスト、$ポート) と実行すると接続時に下のエラー内容が出ます。 "uninitialized constant LDAP (NameError)" 書籍、WEBを参考にしてスクリプトを組んだのですが、どこが問題なのかトレースできません。 もしお分かりの方がおりましたらお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

(正)←/usr/lib/ruby/1.8/net/ldap.rb を指定 これは、質問にある ruby-ldapじゃなくて、Net::LDAPのファイルじゃないですか? RubyForge: Pure Ruby LDAP Tools: Project Info http://rubyforge.org/projects/net-ldap/ であるなら名前空間が違うので LDAPでは何も見つからないはずです。 require 'ldap' でエラーになってないというのもわかりませんが、 Net::LDAPを使うのなら require 'net/ldap' ldap = Net::LDAP.new :host => server_ip_address, :port => 389, :auth => { :method => :simple, :username => "cn=manager,dc=example,dc=com", :password => "opensesame" } filter = Net::LDAP::Filter.eq( "cn", "George*" ) treebase = "dc=example,dc=com" ldap.search( :base => treebase, :filter => filter ) do |entry| puts "DN: #{entry.dn}" entry.each do |attribute, values| puts " #{attribute}:" values.each do |value| puts " --->#{value}" end end end p ldap.get_operation_result こういう感じになるのですが。 ldap.so はどのディレクトリにあって、そもそもインストールは どういう手順でやったのでしょうか?

skip_jack
質問者

お礼

ご丁寧な解答ありがとうございました。 /usr/lib/ruby/1.8/配下に、ldap.rb というファイルを作成していたことがあり、こちらを読んでいました。 require 'net/ldap' として、ご指摘のようにスクリプトを組みなおしたところ正常にどうさいたしました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>require "ldap"  ←/usr/lib/ruby/1.8/netldap.rb を指定 ここの意味がわからないのですがどういうことですか? ldap.so というのがインストール時に作られていて、それを読み込むと思うのですが。 netldap.rb ってどこから出てきたファイルなのかもわかりません。 >もしお分かりの方がおりましたらお教えください。 「おりましたら」というのを丁寧に言っている意味で書いているのなら間違いです。 自分、もしくは自分の身内を下げて言うときに使う表現ですよ。

skip_jack
質問者

補足

(誤)←/usr/lib/ruby/1.8/netldap.rb を指定 (正)←/usr/lib/ruby/1.8/net/ldap.rb を指定 でした。 ldap.soファイルは存在しています。

関連するQ&A

  • ruby 1.9.3のrequireについて

    はじめまして。 私は今初めてrubyの勉強をしています。 使用している参考書はたのしいruby第3です。 ruby 1.9.3-P1.9.4でのrequireについて 今回質問させていただく内容としては requireを使用し外部ファイルを読み込もうとするとエラーになってしま.います。 同じディレクトリにファイルを置いています。 ディレクトリ構造として c:\workspaceの中にscopetest.rbとsub.rbをおいております。 scopetest.rb $x = 0 x = 0 require "sub" p $x p x sub.rb $x = 1 x = 1 実行コマンド ruby scopetestr.rb エラー C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sub (LoadError) from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:i n `require' from scopetest.rb:4:in `<main>' 参考書と同じにやっているのですがエラーがでてしまいます。 初歩的な質問かもしれませんがよろしくおねがいいたします。

    • ベストアンサー
    • Ruby
  • rubyでrequireできない

    gemを使ってmechanizeをインストール完了までいったのですが、ruby実行時にrequire 'mechanize'で落ちてしまいます。 --sample.rb-- require 'rubygems' require 'mechanize' #require 'mechanize-2.7.3' p 'OK' 結果 /home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mechanize (LoadError) from /home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' from sample.rb:2:in `<main>' 現在のgem listでmechanizeは出てきましたので、gemのインストールは上手くいってます。 mechanize (2.7.3) ただLOAD_PATHをみてみると、 ["/home/USERNAME/.rbenv/rbenv.d/exec/gem-rehash", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0/x86_64-linux", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/site_ruby", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby/2.1.0", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby/2.1.0/x86_64-linux", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/2.1.0", "/home/USERNAME/.rbenv/versions/2.1.5/lib/ruby/2.1.0/x86_64-linux"] でgemによってインストールされたlibが /var/lib/gems/1.9.1/gems/mechanize-2.7.3/lib/ LOAD_PATHにないことが原因かもしれないですが、対処法が分からず困ってます。 どなたかご回答願いします。 尚rubyのバージョンは ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

  • ping送信プログラムについて

    ping送信プログラムについて require "ping" host = "localhost" puts Ping.pingecho(host) というプログラムを実行すると、以下のようにエラーが出ます。 C:/src/ping.rb:4:in '<top (required)>': uninitialized constant Ping (NameError) from ping.rb:1:in 'require' from ping.rb:1:in '<main>' requireが未定義ということなんでしょうか? 使用しているRubyは1.91です。 宜しくお願いします。

    • ベストアンサー
    • Ruby
  • レンタルサーバでruby date2

    レンタルサーバでdate2(http://www.funaba.org/ruby.html#date2)ってライブラリを使いたいです。 ファイルをダウンロードしてtar -xvfしてREADMEに従ってくと、 %ruby install.rb install rm -f InstalledFiles ---> lib mkdir -p /usr/local/lib/ruby/site_ruby/1.8 install date.rb /usr/local/lib/ruby/site_ruby/1.8/ install.rb:633:in `initialize': Permission denied - /usr/local/lib/ruby/site_ruby/1.8/date.rb (Errno::EACCES) 以下略 となりました。レンタルサーバなので/usr/localなどに書き込み権限がないからの様です。 こういうライブラリをレンタルサーバで使いたい時って、どうしたら良いのでしょう?? 因に、今まではgem でインストールするライブラリしか使った事がなく、 gemの時は、 setenv GEM_HOME $HOME/local/lib/gems/1.8 setenv RB_USER_INSTALL true gem18 install hogehoge などとしてました。 ご指導の程、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • ruby on rails チュートリアル

    チュートリアルの3章を勉強中なのですが(http://railstutorial.jp/chapters/static_pages?version=4.2#sec-generated_static_pages) リスト3-4で $ rails generate controller StaticPages home help このコマンドをしてから$ rails server -b $IP -p $PORTを入力すると => Booting WEBrick => Rails 4.2.4 application starting in development on http://0.0.0.0:8080 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2015-11-11 09:39:15] INFO WEBrick 1.3.1 [2015-11-11 09:39:15] INFO ruby 2.2.1 (2015-02-26) [x86_64-linux] Exiting /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE) from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:461:in `block in tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `each' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `foreach' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:459:in `tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/utils.rb:70:in `create_listeners' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:133:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:114:in `initialize' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:45:in `initialize' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `new' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/server.rb:286:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `require' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client.rb:26:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/bin/spring:48:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `require' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `<top (required)>' from bin/rails:3:in `load' from bin/rails:3:in `<main>' となってしまいますがこれってエラーですよね? ビューも開けないのですが、どなたか教えていただきたいです もしかしたら上のコマンド関係ないのかもしれないです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • RubyでMySQLを使いたいけど。

    Windows版でRuby186-26をインストールしました。エディタはsciTEです。 その後、RailsとMySQL version5をインストールしました。 そして、簡単なテーブルを作ってみて実行したのですが以下のようなエラーが出てきてしまいました。 C:\ruby>ruby mysql.rb ./mysql.rb:5: uninitialized constant Mysql(Name Error) 色々調べてみたのですが、このエラーの意味が分かりません。 このエラーの意味を教えていただきたいです。よろしくお願いいたします。

  • Ruby:net/httpライブラリで質問です。

    RubyでWEBAPIをたたこうとおもい リファレンスから require 'net/http' Net::HTTP.version_1_2 # おまじない Net::HTTP.start('www.example.com', 80) {|http| response = http.get('/index.html') puts response.body } という記述を利用してヤフーのページを取得しようと 動かしたところまったく動作しなかったのでだめもとで例外をとってみたら begin Net::HTTP.version_1_2() # おまじない Net::HTTP.start("http://yahoo.co.jp", 80) {|http| response = http.get("/index.html"); puts response.body } rescue => ex print ex.class; print "<hr />"; print ex.message; print "<hr />"; print ex.backtrace; end SocketErrorgetaddrinfo: 記憶域制御ブロックが壊れています。 C:/ruby/lib/ruby/1.8/Net/HTTP.rb:560:in `initialize'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:560:in `open'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:560:in `connect'C:/ruby/lib/ruby/1.8/timeout.rb:53:in `timeout'C:/ruby/lib/ruby/1.8/timeout.rb:101:in `timeout'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:560:in `connect'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:553:in `do_start'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:542:in `start'C:/ruby/lib/ruby/1.8/Net/HTTP.rb:440:in `start'C:/Apache/htdocs/tokui12.rb:11 上記のような例外が取れました。 これは、Rubyの際インストールが必要なのでしょうか? リファレンスまんまを利用しているので記述間違いとかはないと思うのですが・・・ システム的な問題?と思いPHPでたたいたところ PHPであれば普通にAPIはたたけました。 対処策はどうしたらいいのでしょうか?

    • ベストアンサー
    • Ruby
  • ruby on railsに関して

    ruby on rails を独学で勉強しようと思い、 「基礎ruby on rails」を用いて、rubyやrailsなどをPCにダウンロードしたのですが、 rubyのバージョンが1.8.7だったので、 自分なりに調べてバージョンを1.9.3にしようとしたのですが、 再起動をするとどうしてもruby1.8.7になってしまいます。 しかたないと思って、1.8.7のまま、 「rails s」のコマンドを実行したら、 ターミナルに ↓ ーーーーーーーーーーーーーーーーーーーーーーー /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:230:in `activate': can't activate rack (~> 1.4.5, runtime) for ["actionpack-3.2.13", "railties-3.2.13"], already activated rack-1.5.2 for ["rack-ssl-1.3.3", "railties-3.2.13"] (Gem::LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:246:in `activate' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `each' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `activate' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:246:in `activate' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `each' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `activate' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem' from /usr/bin/rails:18 ーーーーーーーーーーーーーーーーーーーーーーー このようなログがでてきました。 調べても内容が分からないので、 分かる人がおりましたら、 どのように対処をすればよいのかを教えていただけると幸いです。

  • rubyのファイルを実行できません。

     Debian(Woody)の環境です。 #find ./ -name ruby ./usr/bin/ruby ./usr/share/doc/ruby ./usr/doc/ruby ./usr/lib/ruby があり、/usr/binにrubyのファイルが確認できます。 $ruby -v ruby 1.6.7 (2002-03-19) [i386-linux] が出ます。pathが通っています。 $ ruby -e 'print "hello World\n"' で hello World もちゃんどでます。 しかし、vi hello.rbで、中には ------------------- #!/usr/bin/ruby print "Hello World!\n" --------------------- と、実行権-rwxr-xr-xにします。 %hello.rb では: bash: hello.rb: command not found が出て,実行できませんでした。 ファイルの中に、#!/usr/lib/rubyに代えてもおなじでした。  因みに %env で ... PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11 ... がでます。  アドバイスをよろしくお願いします。

    • 締切済み
    • CGI
  • Ruby on Railsの環境構築

    どうにも困り果てております。 少し面倒な質問となってしまいますが、お答え頂けると助かります。 現在、Railsを利用したWEBアプリケーションを作成しようと、Railsの勉強をしているのですが、環境構築の段階でつまづいてしまいました。 具体的には、TerminalでRails sコマンド実行しても、WEBrickが起動せず、 /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.22/lib/bundler/rubygems_integration.rb:183:in `stub_source_index170': uninitialized constant Gem::SourceIndex (NameError) のようなメッセージが表示されてしまいます。 Mac OS X Lion 10.7.5を使用しております。 また、Terminalで -vコマンドを利用して確かめた所、 ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11] gem 2.1.11 MacPorts 2.2.1 Rails 3.2.2 Xcode 4.2.1 が確認出来ました。 Terminalを使っての作業が初めてであったため、うまく説明出来ていない部分もあるとは思いますが、ご指導頂けると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • Ruby

専門家に質問してみよう