ruby で kconv を require できなくて困っています。
理由を教えてください。
ほかに調査するために必要な実行コマンドがありましたら、
追記致しますのでお教えください。
@ubuntu:$ uname -a
Linux ubuntu 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
@ubuntu:$ which ruby
/usr/bin/ruby
@ubuntu:$ which irb
/usr/bin/irb
@ubuntu:$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
@ubuntu:$ ls -l /usr/lib/ruby/1.8 | grep kconv
-rw-r--r-- 1 root root 8319 2011-07-27 20:21 kconv.rb
@ubuntu:$ irb
irb(main):001:0> $:.each do |path|
irb(main):002:1* puts(path)
irb(main):003:1> end
/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/x86_64-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/x86_64-linux
.
=> ["/usr/local/lib/site_ruby/1.8",
"/usr/local/lib/site_ruby/1.8/x86_64-linux",
"/usr/local/lib/site_ruby",
"/usr/lib/ruby/vendor_ruby/1.8",
"/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux",
"/usr/lib/ruby/vendor_ruby",
"/usr/lib/ruby/1.8",
"/usr/lib/ruby/1.8/x86_64-linux", "."]
irb(main):004:0>
irb(main):005:0*
irb(main):006:0* require 'kconv'
=> false
irb(main):007:0>
http://doc.ruby-lang.org/ja/1.9.2/doc/index.html
「オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル」の、
「組み込みライブラリ」の Builtin libraries から、Module Kernel の require の項を参照ください。
http://doc.ruby-lang.org/ja/1.9.2/class/Kernel.html
ライブラリのロードに成功した時には true を返し、ロードした feature の名前を(拡張子も含めて) 変数 $" に追加します。ただし、feature の名前が既に $" に含まれていた場合はロードせずに false を返します。
古いマニュアルだと、もっとズバリと書かれてたんですけどね。
http://www.ruby-lang.org/ja/old-man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#require
実際にライブラリをロードした時には true、既にロードされている時には false を返します。ロードに失敗した場合は、例外 LoadError が発生します。
load の項も、合わせて確認しておくと、良いと思います。
require ’zlib’ で false になる - 36丁目 オレオダウンローダー
これが参考になりませんか。
kconvは標準添付だし関係ないか…
require 'kconv'でfalseはコメント蘭の通り、$"でkconv.rbがあってもfalseになりますね。
kconvの処理がうまくいかない(?)ならファイルの文字コードがおかしいとか。
Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv
http://doc.ruby-lang.org/ja/1.9.2/doc/index.html
「オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル」の、
「組み込みライブラリ」の Builtin libraries から、Module Kernel の require の項を参照ください。
http://doc.ruby-lang.org/ja/1.9.2/class/Kernel.html
ライブラリのロードに成功した時には true を返し、ロードした feature の名前を(拡張子も含めて) 変数 $" に追加します。ただし、feature の名前が既に $" に含まれていた場合はロードせずに false を返します。
古いマニュアルだと、もっとズバリと書かれてたんですけどね。
http://www.ruby-lang.org/ja/old-man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#require
実際にライブラリをロードした時には true、既にロードされている時には false を返します。ロードに失敗した場合は、例外 LoadError が発生します。
load の項も、合わせて確認しておくと、良いと思います。
コメントで引用したマニュアルの記述は、手元にある古いバージョンのものだったので、
今のバージョンのマニュアルの記述も含めて、回答を編集しました。
ご回答ありがとうございました。助かりました。
コメントで引用したマニュアルの記述は、手元にある古いバージョンのものだったので、
2011/11/13 16:49:35今のバージョンのマニュアルの記述も含めて、回答を編集しました。
ご回答ありがとうございました。助かりました。
2011/11/13 17:44:37