0

Rubyスクリプトを実行しようとしているサーバーでこのエラーが発生します。

require: no such file to load -- ssch_mail_lib (LoadError)

ただし、私のワークステーション コンピューターでは、スクリプトは正常に実行されます。

関連するコードは次のとおりです。

#!/usr/bin/ruby
$: << './lib'
require 'ssch_mail_lib'

$LOAD_PATH の出力

/Library/Ruby/Site/1.8
/Library/Ruby/Site/1.8/powerpc-darwin11.0
/Library/Ruby/Site/1.8/universal-darwin11.0
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8/universal-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0
.
./lib

名前とディレクトリを3倍にチェックしました。それらは一致します。

私が見逃しているアイデアはありますか?または、あるマシンでは問題なく動作するのに、別のマシンでは動作しないのはなぜですか? ありがとう!

編集: どちらも Ruby 1.8.7 を使用しています。

EDIT2: スクリプトは、TextMate 経由で実行した場合にのみ機能します。(LoadError)端末使用時は動作しません。

4

1 に答える 1

1

1.8 と 1.9 には根本的な違いが 1 つあります。require セマンティクスです。1.8 ではrequire、相対パスと絶対パスを処理します。1.9 ではrequire、相対パスまたは場所にあるユーザー定義ファイルではなく、標準ライブラリにのみ使用できます。そのためには、Ruby 1.9 メソッドを使用する必要がありますrequire_relative。あなたのコンピュータの 1 台には 1.8 があり、もう 1 台には 1.9 があると思います。with 句を使用しRUBY_VERSIONて、バージョン固有のコードを作成できます。

于 2012-06-05T16:56:48.053 に答える