1

私のウェブホストのシステムでは、gemをインストールして使用するには、自分のrubyのコピーをインストールする必要があるようです。フォーラムでの彼らの助けを借りて、私はそれを成し遂げました。Railsアプリで特定のgem(Image Scienceと呼ばれる)を使用しようとしています。

この時点でirb、以下を開いて入力すると、次のようになります。

require 'rubygems' #true
require 'image_science' #LoadError: libfreeimage.so.3: cannot open shared 
                         #object file: No such file or directory (etc)....

ホストのアドバイスで、私はbashに戻り、次のように入力します。

export LD_LIBRARY_PATH=~/ruby1.8/lib

このコマンドにより、irbは要求できますimage_science-「true」を返します。私が理解しているように、「ねえ、このディレクトリで宝石を探してください」と言っています。

問題は、これによってRubyスクリプトがアクセスできるものが変更されないことです。(これもセッションの間だけ持続しますが、追加できると思います.bashrc。)Railsアプリで、そのgemを要求しようとすると、エラーが発生します。

だから私は2つの質問があります:

  1. このgemをRubyスクリプト、具体的にはRailsモデルファイルで利用できるようにするにはどうすればよいですか?
  2. モデルファイルに「require」コマンドを入れる必要があるのでしょうか、それともgemをロードする他の方法がありますか?
4

1 に答える 1

3

gemが1つのモデルでのみ使用される場合、通常はそのモデルに「gem」が必要です。アプリがgemを使用する場合、たとえばビューまたはコントローラーで、app.rbというファイルを作成し、すべてのrequireステートメントを含むconfig/initializersに貼り付けます。イニシャライザブロック内のconfig/environment.rbに含めることもできます。

config.gem 'pg', :lib => 'pg'

プロジェクトがロードされる前にそのgemが必要になりますが、ルビーファセットなどの特定のgemでは問題が発生しました。

LD_LIBRARY_PATHの場合、これをconfig / environment / *。rbファイルの1つに入れます(環境に合わせてカスタマイズしますが、開発は本番環境とは異なる可能性があります)

ENV['LD_LIBRARY_PATH'] = "#{ENV['LD_LIBRARY_PATH']}:#{ENV['JAVA_HOME']}/jre/lib/amd64:#{ENV['JAVA_HOME']}/jre/lib/amd64/server"
于 2010-03-05T15:05:33.877 に答える