2013-09-30 103 views
1

我有需要將我的heroku應用程序用於生產的數據。當我運行heroku運行rake db:seed命令時出現錯誤,「rake中止了!目錄中沒有這樣的文件」Heroku rake任務文件路徑錯誤

我試過創建一個自定義rake任務,並且出現同樣的錯誤。

我rake任務的開始是如下:

require 'csv' 
CSV.foreach("/Users/username/Documents/Apps Folder/myapp/seed_file.txt") do |row| 
    ... 
end 

不知道如果我的問題是,我有我的CSV文件的位置,或者如果它是別的東西,我一直在等相關的問題上顯得stackoverflow和他們一直無法解決我的問題。有誰知道如何解決這個問題?

編輯:我已經加我收到終端的錯誤消息當我嘗試運行下面我自定義的耙子任務:

Running `rake customraketask` attached to terminal... up, run.8243 
rake aborted! 
No such file or directory -/Users/username/Documents/Apps Folder/myapp/app/assets/files/seed_file.txt 
/app/lib/tasks/customraketask.rake:13:in `block in <top (required)>' 
Tasks: TOP => customraketask 
(See full trace by running task with --trace) 

回答

2

而是在當前的路徑輸入到文件(這看起來是OSX文件目錄結構,嘗試做這樣的事情

File.expand_path("../../seed_file.txt", __FILE__)

這將使您相對於當前文件的路徑,結合一個../../seed_file.txt路徑和處理將返回實際absolute path什麼,你可能會看到,只要您的文件位於db/seeds.rb是:/home/username/Apps Folder/my_app/seed_file.txt

this previous question,瞭解更多有關__FILE__

編輯:既然你在你的文件路徑有空格,請嘗試以下操作:

require 'shellwords' 
File.expand_path("../seed_file.txt", __FILE__).shellescape 

編輯#2:我想你誤解了我的答案。我會在這裏用不同的方法重新解釋它。

所以,如果我的文件目錄如下:

├───App 
| └───db 
|  ├───seeds.rb 
| ├───seed_file.txt 

然後我會鍵入此爲我的seeds.rb文件

# seeds.rb 
CSV.foreach(File.join(File.dirname(__FILE__), '../seed_file.txt')) do |row| 
    puts row 
end 
+0

我使用了File.expand_path,它給了我絕對路徑,它與我已經寫過的相同,所以我仍然得到相同的錯誤 – Reuben

+0

Paste整個錯誤到你的問題。 – Momer

+0

我粘貼了上面的錯誤消息 – Reuben

0

如果你仔細閱讀錯誤消息,你會意識到Heroku的不有你的/Users/username ...目錄。

嘗試使用CSV.foreach("./seed_file.txt")

+0

即使在將種子文件移動到應用程序中後,仍然得到相同的錯誤 – Reuben

0

從您的文件路徑來看,它看起來像你試圖從位於本地系統上的文件中找到種子,而不是在Heroku上。在Rails應用程序的db文件夾中應該有一個seeds.rb文件,您可以在其中配置數據庫的種子。嘗試添加您的seed_file.txt到rails項目文件夾可能app > assets > files > seed_file.txt或類似的東西,並引用該文件路徑。