0

WEBrick CGIhandlerからCGIプログラムを実行しようとしていますが、gemライブラリの「loaderror」で失敗し続けました。誰かが以前に行動を追っているのを見たことがありますか?CGIスクリプトで有効なgemの場所を検索するにはどうすればよいですか?

【シチュアルション】

Webrickサーバーを介して「mysql2」ライブラリを必要とするCGIスクリプトを実行すると、次のエラーが発生しました。

エラーCGIHandler:/home/charles/code/svr/lib/cgitest.rb:/home/charles/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require。 rb:36:in `require':そのようなファイルをロードできません--mysql2 / version(LoadError)

cgitest.rbからこの特定の「require」をコメントアウトすると、このスクリプトが機能するため、このライブラリのロードに失敗したように見えます。スクリプトに「putsGem.path」を追加したことは、CGIHandlerがgemを見つけるために次のディレクトリを探していることを示しています。

["/home/charles/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1"、 "/.gem/ruby/1.9.1"]

実際のGEM:HOMEとGEM:PATHは次のとおりです。

["/home/charles/.rvm/gems/ruby-1.9.3-p194"、 "/home/charles/.rvm/gems/ruby-1.9.3-p194@global"]

私は非常に単純なものが欠けていると思いますが、それらを理解することができませんでした。誰かが私を正しい方向に導いてくれたら本当に感謝しています。どんな入力でも大歓迎です。

[環境]

RVMを使用してRuby1.9.3をUbuntuServer12.4にインストールし、「mysql2」ライブラリを含む多数のgemを使用します。また、ローカルから実行すると、スクリプトは「mysql2」をロードできます。

$ which ruby

/home/charles/.rvm/rubies/ruby-1.9.3-p194/bin/ruby

$ irb

1.9.3-p194:001> Gem.path

=> ["/home/charles/.rvm/gems/ruby-1.9.3-p194"、 "/home/charles/.rvm/gems/ruby-1.9.3- p194@global"]

1.9.3-p194:002> require'mysql2'

=>真

4

1 に答える 1

0

bin/rubyの代わりにラッパーを使用する必要があります。

/home/charles/.rvm/wrappers/ruby-1.9.3-p194/ruby

これにより、rubyを起動するときに適切な環境をロードできます。

于 2012-06-03T18:39:46.487 に答える