我有一个试图要求restclient模块的
Ruby脚本.当我将它减少到这一行时,它仍然会失败:
#!/usr/bin/env ruby require 'restclient'
当我运行它时,我收到以下错误:
./test.rb:3:in `require': no such file to load -- restclient (LoadError) from ./test2.rb:3
当我运行irb时,模块加载正常:
$irb >> require "restclient" => true >>
据我所知,看起来脚本和irb都有相同的模块路径:
$ruby -e "puts $:" /Library/Ruby/Site/1.8 /Library/Ruby/Site/1.8/powerpc-darwin10.0 /Library/Ruby/Site/1.8/universal-darwin10.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-darwin10.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-darwin10.0 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 . $irb >> puts $: /Library/Ruby/Site/1.8 /Library/Ruby/Site/1.8/powerpc-darwin10.0 /Library/Ruby/Site/1.8/universal-darwin10.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-darwin10.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-darwin10.0 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 . => nil >>
什么会导致模块通过irb加载,但不是直接通过Ruby运行?
另一个令人困惑的细节是,restclient gem似乎并不在我的开头. irb如何找到它?
$locate restclient | grep gems /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/bin/restclient /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/abstract_response.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/exceptions.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/net_http_ext.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/payload.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/raw_response.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/request.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/resource.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient/response.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/lib/restclient.rb /Library/Ruby/Gems/1.8/gems/rest-client-1.6.1/spec/restclient_spec.rb
谢谢 – 马克
解决方法
尝试
require "rubygems"
在源代码文件中,或使用ruby -rubygems filename.rb启动ruby程序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。