我在服务器上遇到此错误,我正在尝试运行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)
。
答案 0 :(得分:1)
1.8和1.9之间存在一个根本区别:需要语义。在1.8中,require
处理相对和绝对路径。在1.9中,require
只能用于标准库,而不能用于相对路径或位置中的用户定义文件。为此,您必须使用Ruby 1.9方法require_relative
。我猜你的一台电脑有1.8,另一台1.9。您可以使用RUBY_VERSION
的子句来制作特定于版本的代码。