2011-04-22 10 views
6

Tengo un script de Ruby que está tratando de requerir el módulo de repositorio. Cuando reducirlo a sólo esta línea, todavía falla:¿Ruby e IRB utilizan diferentes rutas de búsqueda de módulos?

#!/usr/bin/env ruby 

require 'restclient' 

Cuando corro, me sale el siguiente error:

./test.rb:3:in `require': no such file to load -- restclient (LoadError) 
    from ./test2.rb:3 

Cuando corro IRB, las cargas del módulo fina:

$ irb 
>> require "restclient" 
=> true 
>> 

Por lo que yo puedo decir, parece que tanto el guión y el IRB tienen las mismas rutas de módulo:

$ 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 
>> 

¿Qué causaría que un módulo se cargue a través de irb, pero no cuando se ejecuta directamente a través de Ruby?

Otro detalle confuso es que la gema del cliente no parece estar en mi camino para empezar. ¿Cómo es encontrarlo?

$ 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 

Gracias - Marc

Respuesta

12

Trate

require "rubygems" 

en el archivo de código fuente, o iniciar el programa de rubí con filename.rb rubí -rubygems.

+0

Eso solucionó el problema, ¡gracias! – Marc

Cuestiones relacionadas