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

我已经检查了三倍的名称和目录。他们匹配。

有什么我想念的想法吗?或者为什么它可以在一台机器上正常工作而在另一台机器上却不行?谢谢!

编辑: 他们都使用 Ruby 1.8.7。

EDIT2: 该脚本仅在通过 TextMate 运行时才有效。(LoadError)使用终端时,它不起作用。

4

1 回答 1

1

There is one fundamental difference between 1.8 and 1.9: require semantics. In 1.8, require handles relative and absolute paths. In 1.9, require can only be used for the standard library, not user defined files in relative paths or locations. For that, you have to use the Ruby 1.9 method require_relative. I'm guessing that one of your computers has 1.8, and the other 1.9. You can use a clause with RUBY_VERSION to make version specific code.

于 2012-06-05T16:56:48.053 回答