ruby-on-rails ruby rspec require ruby-1.9

ruby on rails - requiere lib en RSpec con Ruby 1.9.2 trae "no se carga ese archivo"



ruby-on-rails require (4)

Estoy intentando actualizar uno de mis proyectos de Rails a Ruby 1.9.2 . Todo fue bastante bien, pero se rompió una prueba de RSpec. En esta prueba, necesito una lib Ruby:

# file spec/models/my_lib_spec.rb require ''spec_helper'' require ''lib/services/my_lib'' describe "MyLib" do it "should do something" do ...

La lib se ve así:

# file lib/services/my_lib.rb class MyLib def self.do_something ...

En Ruby 1.8.7 (REE) la prueba funcionó bien:

$ ruby -v ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin11.1.0], MBARI 0x6770, Ruby Enterprise Edition 2011.03 $ rspec ./spec/models/my_lib_spec.rb .. Finished in 1.4 seconds 2 examples, 0 failures

En Ruby 1.9.2 obtengo un error no such file to load :

$ ruby -v ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.1.0] $ rspec ./spec/models/my_lib_spec.rb /Users/tmangner/.rvm/gems/ruby-1.9.2-p290@madgoal/gems/activesupport- 3.2.2/lib/active_support/dependencies.rb:251:in `require'': no such file to load -- lib/services/my_lib (LoadError)

No tengo ni idea, lo que impide que Ruby 1.9 encuentre la lib.


Intenta definir la ruta manualmente

$LOAD_PATH << ''./lib/services/''

y luego agrega la biblioteca como esta

require ''my_lib.rb''


La ruta de carga en ruby ​​1.9 no funciona exactamente como lo hizo en 1.8.

Necesita agregar el directorio raíz del proyecto a su ruta de carga.

Puedes hacer esto ejecutando rspec como este:

rspec -I . ./spec/models/tipp_remember_spec.rb

... o agregando cosas manualmente a la ruta de carga en su spec_helper.rb (ponga esto en la parte superior de su spec_helper.rb

$:<< File.join(File.dirname(__FILE__), ''..'')

Creo que rspec por defecto también agrega su directorio lib local a la ruta de carga, por lo que podría reescribir la línea requerida de la siguiente manera:

require ''services/my_lib''


Si su especificación se encuentra en spec/models/my_lib_spec.rb y desea probar lib/services/my_lib.rb , simplemente dígale a la especificación cómo llegar al archivo lib

require ''spec_helper'' require_relative ''../../lib/services/my_lib'' describe "MyLib" do it "should do something" do

Nota final: ya que está incluyendo spec_helper, normalmente no tiene que dar todas las rutas a las dependencias, ya que Rails debería cargarlas por usted.


En RSpec 2.x, el directorio lib se agrega automáticamente a la ruta de carga (vea RSpec-Core # get_started ).

Entonces puede usar require ''services/my_lib'' en su archivo spec.