Ruby on Railsのアプリケーション上でMeCabによる形態素解析を行おうと思い、実装を始めました。
MeCab / MeCab用の辞書(UTF8)のインストールが終わり、Terminal上からは正常にmecabが動作することを確認しています。
最後にmecab-rubyをインストールしました。
irb上から
require 'MeCab'
を実行するとtrueが返り正しく読み込めるのですが、
これをRailsのコントローラ上で実行すると
no such file to load
エラーが返ってきてしまいます。
irbとrailsでrequireが呼ばれた時に読みにいくパスが違うのかなと思い調べてみたのですが、
残念ながら結局原因解明には至りませんでした。
もしなにかご存知の情報がありましたらよろしくお願いします。
当方の開発環境は
Leopard + Ruby 1.8.6 + Rails 2.0.2 + SQLite3です。
ご回答ありがとうございます。
コントローラではなく起動時に読み込む方法も試してみたのですが、残念ながら同様の「no such file to load」エラーが出てしまい、Mongrelが起動できなくなってしまいました。
http://www.pen-chan.jp/net/set/ruby-tips.html
調べてみたところ、requireでは$: でさされているディレクトリからファイルを探して読み込むらしいので、irbとRailsアプリケーションのruby/scriptでそれぞれ$: の中身を表示してみましたが、基本的にはgem関連の物を除くと同じパスが指定されていました。
ちなみに、irbではなく普通のrbファイルを作って
require "MeCab"
を実行しても正常に動作しています。
部分的にみただけなのでよくわかりませんが、どうやらRails上で呼ばれるrequireはgem_original_requireというメソッドに置き換えられるようなので、もしかするとその辺りになにか原因があるのではないかと考えております。
※MeCab.bundle は「/opt/local/lib/ruby/1.8/i686-darwin9.1.0」以下にあり、このディレクトリはirb / Railsいずれの場合も$: に含まれていました。
(最後になりましたが、いつもブログ拝読しております)