1

I have data I need to seed my heroku app with for production. When I run the heroku run rake db:seed command I get an error, "rake aborted! no such file in directory"

I've tried creating a custom rake task and I get the same error.

The beginning of my rake task is as follows:

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

Not sure if my issue is where I have my CSV file located, or if it's something else, I've looked at other related questions on stackoverflow and they haven't been able to fix my problem. Does anyone know how to solve this issue?

EDIT: I've added the error message I receive in terminal when I try to run my custom rake task below:

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)
4

3 に答える 3

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です。

詳細については、この前の質問を参照してください。__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
于 2013-09-30T18:15:57.273 に答える
0

エラー メッセージを注意深く読むと、Heroku にディレクトリがないことがわかります/Users/username ...

CSV.foreach("./seed_file.txt")代わりに試してください。

于 2013-09-30T18:15:01.293 に答える
0

ファイル パスから判断すると、Heroku ではなく、ローカル システムにあるファイルからシードしようとしているようです。Rails アプリの db フォルダーに、データベースのシードを設定できるシード .rb ファイルがあるはずです。あなたのseed_file.txtをレールプロジェクトフォルダに追加するapp > assets > files > seed_file.txtか、似たようなものに追加して、代わりにそのファイルパスを参照してみてください。

于 2013-09-30T18:18:06.217 に答える