2014-01-30 42 views
0

所以,我想創建一個寶石與lib文件夾和RSpec的測試,一個規範的文件夾,例如:香草紅寶石rspec的不能看到我的文件

- my_gem 
|-- lib 
| |-- my_gem 
| | |-- foo.rb 
| | 
| |-- my_gem.rb 
| 
|-- spec 
| |-- lib 
| |-- foo_spec.rb 
| 
|-- my_gem.gemfile 
|-- Rakefile 

my_gem.rb包含require 'my_gem/foo'工作正常。

但我試圖require 'lib/my_gem'的規範文件不起作用。當我沒有明確設置的路徑與-I .運行rspec的(或耙規範),它無法加載文件:

foo_spec.rb:1 in `require': cannot load such file -- lib/my_gem.rb (LoadError) 

我覺得我不應該要求每一個規範中的一個spec_helper.rb剛解決這個問題,我也不應該每次都指定rspec的加載路徑。必須有一個簡單的約定,我缺少,因爲我是寶石開發的新手(我通常只做軌道)。


編輯:我應該指出,我很清楚我可以require_relative '../../lib/my_gem.rb'。關鍵是我希望能夠像我習慣在rails中那樣自動獲取根文件夾到我的路徑上。如果這是不可能的,請讓我知道。

回答

3

規範不知道lib/my_gem的路徑。嘗試

require_relative '../../lib/my_gem' 
+0

是的,這個工程,我已經在這裏降落在這裏,但它似乎是不必要的複雜。不rspec有自動獲取根文件夾到路徑上的方法嗎? – mellowfish

+0

它應該如何知道「根文件夾」是什麼?它知道在Rails之下,因爲它具有Rails環境,所有合適的需求路徑已經被添加。如果沒有Rails,你最好的最好的可能是在每個規範中要求'spec_helper';可以簡單地將'../ ..'添加到搜索路徑數組'$:'中 – Chowlett