我有一個寶石,我們將其稱爲ToastMitten
,我將其包含在我的Rails應用程序中。我正在爲ToastMitten
寫一些測試,我需要加載一個文件,並且我想從gem的根目錄指定一個路徑。如何在Rails項目的Rspec測試中獲取gem的根目錄?
我剛剛嘗試使用Rails.root.to_s
,但這給了我一些像/Users/me/projects/toastmitten/spec/dummy
。我本來預計這條路將以toastmitten/
結束。
我在做什麼錯?
我有一個寶石,我們將其稱爲ToastMitten
,我將其包含在我的Rails應用程序中。我正在爲ToastMitten
寫一些測試,我需要加載一個文件,並且我想從gem的根目錄指定一個路徑。如何在Rails項目的Rspec測試中獲取gem的根目錄?
我剛剛嘗試使用Rails.root.to_s
,但這給了我一些像/Users/me/projects/toastmitten/spec/dummy
。我本來預計這條路將以toastmitten/
結束。
我在做什麼錯?
Rails.root.parent.to_s
如果它總是回饋您的虛擬Rails應用程序,請向上移動到父項。
看起來您正在使用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。
在一個Rspec測試中,有幾個文件夾位於'spec'的深處,我試圖加載一個'spec/fixtures'文件。 – 2011-03-31 21:28:01
可以說規格是'spec/f1/f2/blah_spec.rb'你要使用'File.expand_path(File.join(File.dirname(__ FILE__),'..','..','夾具','file.txt'))' – Adam 2011-03-31 21:34:36
這給了我'spec'文件夾,在這種情況下工作,但這是你所期望的? – 2011-03-31 21:28:35
是的,這是我所期望的。用虛擬應用測試Rails插件/ gems有點痛苦。我爲一個項目做了它,改變設置是非常乏味和令人沮喪的。 – 2011-03-31 21:33:44