2013-09-30 4 views
1

У меня есть данные, которые мне нужно для того, чтобы вырезать приложение heroku для производства. Когда я запускаю команду heroku rake db: seed, я получаю сообщение об ошибке «rake aborted! No такой файл в каталоге»Ошибка пути к файлу с ошибкой Heroku

Я попытался создать пользовательскую задачу rake, и я получаю ту же ошибку.

Начало моей передней задачи выглядит следующим образом:

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

Не уверен, что, если мой вопрос, где я находится мой файл CSV, или, если это что-то другое, я посмотрел на другие смежные вопросы по stackoverflow, и они не смогли исправить мою проблему. Кто-нибудь знает, как решить эту проблему?

EDIT: Я добавил сообщение об ошибке я получаю в терминале, когда я пытаюсь запустить свою пользовательскую задачу грабли ниже:

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__

EDIT: Поскольку у вас есть пробелы в вашем FilePath, попробуйте следующее:

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

EDIT # 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

Вставить всю ошибку в ваш вопрос. – Momer

+0

Я вставил сообщение об ошибке выше – Reuben

0

Если внимательно прочитать сообщение об ошибке, вы бы реализовать Heroku бы не укажите свой каталог /Users/username ....

Попробуйте CSV.foreach("./seed_file.txt") вместо этого.

+0

По-прежнему такая же ошибка, даже после перемещения файлов семян в приложение – Reuben

0

судя из вашего пути к файлу, это выглядит, как вы пытаясь посеять из файла, который находится в вашей локальной системе, а не в Heroku. должен быть файл seeds.rb в папке db вашего приложения rails, где вы можете настроить посев базы данных. попробуйте добавить файл seed_file.txt в папку проекта rails, возможно, app > assets > files > seed_file.txt или что-то подобное, и вместо этого ссылайтесь на этот путь к файлу.

Смежные вопросы