2014-02-14 44 views
0

我需要在遷移期間將文件的內容插入數據庫(Rails 3.2.13)。引用項目中其他位置的文件的正確方法是什麼?從遷移中獲取文件的完整路徑

DB /遷移/ the_migration.rb

class ... 
    content = File.read("../../app/views/layours/application.html.erb") 
end 

的相對路徑似乎並沒有工作 - 我得到:

No such file or directory - ../../app/views/layouts/application.html.erb 

我怎麼能這個路徑映射到一個絕對路徑?

回答

1

你可以試試下面的代碼:

class ... 
    path = File.expand_path('../../app/views/layouts/application.html.erb', __FILE__) 
    content = File.read(path) 
end 
+0

它的工作,但由於某種原因,我不得不去了三個目錄而不是兩個。不知道爲什麼會這樣。 –

0

假設你使用耙申請的活動記錄遷移。文件路徑將與您開始耙取的位置有關,我相信這將是項目的根目錄。

文件路徑將是:

含量= File.read(「應用程序/視圖/佈局/ application.html.erb」)

+0

這不適合我。我在根項目路徑中使用了rake,我不得不上升到三個層次才能到達/ app。如果你說的是真的,我只需要使用'/ app/views/...'路徑。如果它很重要,我使用Aptana Studio/Eclipse並在Eclipse中從控制檯內運行rake。 –

+0

我不確定eclipse控制檯。你不想在沒有第一個斜槓的情況下使用'/ app/viwes /'你想'app/views /'。如果您創建虛擬遷移並在遷移運行時將Dir.pwd放到頂部,您應該找出它運行的目錄。 –

+0

是的,第一個'/'是我在編輯期過後發現的錯字! :( 謝謝。 –