Ich versuche, eines meiner Rails-Projekte auf Ruby 1.9.2
zu aktualisieren. Alles lief ziemlich gut, aber ein RSpec-Test brach. In diesem Test ich require
ein Ruby lib
:erfordert lib in RSpec mit Ruby 1.9.2 bringt "keine solche Datei zum Laden"
# file spec/models/my_lib_spec.rb
require 'spec_helper'
require 'lib/services/my_lib'
describe "MyLib" do
it "should do something" do
...
Die lib sieht wie folgt aus:
# file lib/services/my_lib.rb
class MyLib
def self.do_something
...
In Ruby 1.8.7 (REE) arbeitete der Test gut:
$ 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
In Ruby 1.9.2 Ich erhalte einen Fehler 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/[email protected]/gems/activesupport-
3.2.2/lib/active_support/dependencies.rb:251:in `require': no such file
to load -- lib/services/my_lib (LoadError)
Ich habe keine Ahnung, was Ruby 1.9 davon abhält, die lib zu finden.
Der letzte Teil Ihrer Antwort war der Schlüssel! "require 'service/my_lib'" funktioniert in Ruby1.9 _and_ Ruby1.8. Offensichtlich enthält RSpec 'lib' in den $ LOAD_PATH. – DiegoFrings
großartig! rspec '- I .' ist der Schlüssel für mich, wenn ich Ruby von 1.8 auf 1.9 aktualisiere. Vielen Dank @Frost! –
Wenn Sie '-I .' nicht jedes Mal angeben möchten, wenn Sie' rspec' ausführen, können Sie es Ihrer .rspec-Datei hinzufügen und es wird standardmäßig hinzugefügt. – bloudermilk