我想升級我的一個Rails項目到Ruby 1.9.2
。一切都很順利,但是一次RSpec測試破裂了。在這個測試我require
一個Ruby lib
:在RSpec中需要lib與Ruby 1.9.2帶來「沒有這樣的文件加載」
# file spec/models/my_lib_spec.rb
require 'spec_helper'
require 'lib/services/my_lib'
describe "MyLib" do
it "should do something" do
...
的LIB看起來像這樣:
# file lib/services/my_lib.rb
class MyLib
def self.do_something
...
在Ruby 1.8.7(REE)測試效果很好:
$ 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
在Ruby 1.9.2我收到錯誤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)
我不知道Ruby 1.9是否能找到lib。
你答案的最後部分是關鍵! 「require'service/my_lib'」適用於Ruby1.9和Ruby1.8。顯然,RSpec在$ LOAD_PATH中包含'lib'。 – DiegoFrings 2012-07-07 18:12:46
太棒了! rspec' - 我是我在將紅寶石從1.8升級到1.9時的關鍵。非常感謝@Frost! – 2012-12-07 02:43:53
如果您不想在每次運行rspec時指定'-I .',則可以將其添加到.rspec文件中,並且默認情況下會添加它。 – bloudermilk 2014-05-20 23:17:32