人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【至急回答希望】
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>

●質問者: donkydonut
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Cherenkov
●25ポイント

require ’zlib’ で false になる - 36丁目 オレオダウンローダー
これが参考になりませんか。

kconvは標準添付だし関係ないか…
require 'kconv'でfalseはコメント蘭の通り、$"でkconv.rbがあってもfalseになりますね。
kconvの処理がうまくいかない(?)ならファイルの文字コードがおかしいとか。


Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv


2 ● a-kuma3
●475ポイント ベストアンサー

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 の項も、合わせて確認しておくと、良いと思います。


a-kuma3さんのコメント
コメントで引用したマニュアルの記述は、手元にある古いバージョンのものだったので、 今のバージョンのマニュアルの記述も含めて、回答を編集しました。

donkydonutさんのコメント
ご回答ありがとうございました。助かりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ