2011-03-31 44 views
2

我有一個寶石,我們將其稱爲ToastMitten,我將其包含在我的Rails應用程序中。我正在爲ToastMitten寫一些測試,我需要加載一個文件,並且我想從gem的根目錄指定一個路徑。如何在Rails項目的Rspec測試中獲取gem的根目錄?

我剛剛嘗試使用Rails.root.to_s,但這給了我一些像/Users/me/projects/toastmitten/spec/dummy。我本來預計這條路將以toastmitten/結束。

我在做什麼錯?

回答

3
Rails.root.parent.to_s 

如果它總是回饋您的虛擬Rails應用程序,請向上移動到父項。

+0

這給了我'spec'文件夾,在這種情況下工作,但這是你所期望的? – 2011-03-31 21:28:35

+0

是的,這是我所期望的。用虛擬應用測試Rails插件/ gems有點痛苦。我爲一個項目做了它,改變設置是非常乏味和令人沮喪的。 – 2011-03-31 21:33:44

3

看起來您正在使用Rails引擎(由enginex生成,因此是spec文件夾中的虛擬應用程序)。如果您需要要求您的測試文件中使用絕對路徑,可以使用以下命令:

file = File.expand_path(File.join(File.dirname(__FILE__), 'path', 'to', 'file.ext')) 

root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) 

你可以對你在哪裏試圖要求該文件具體些嗎? 此外,根示例可能需要更多..'s。

+0

在一個Rspec測試中,有幾個文件夾位於'spec'的深處,我試圖加載一個'spec/fixtures'文件。 – 2011-03-31 21:28:01

+0

可以說規格是'spec/f1/f2/blah_spec.rb'你要使用'File.expand_path(File.join(File.dirname(__ FILE__),'..','..','夾具','file.txt'))' – Adam 2011-03-31 21:34:36

相關問題