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

Ruby on Railsに関する質問です。


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です。


●質問者: sota1986
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2.0 IRB Leopard MeCab Rails
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● masuidrive
●60ポイント

config/environment.rb の最後に

require 'mecab'

と書くだけで起動時に読み込まれるので、動くと思います。

◎質問者からの返答

ご回答ありがとうございます。

コントローラではなく起動時に読み込む方法も試してみたのですが、残念ながら同様の「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いずれの場合も$: に含まれていました。


(最後になりましたが、いつもブログ拝読しております)

関連質問


●質問をもっと探す●



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