Ошибка при выполнении rake db:migrate на Heroku

когда делаешь

heroku run rake db:migrate

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

/app/vendor/bundle/ruby/1.9.1/bin/rake: No such file or directory - pg_dump -i -s -x -O -f /app/db/structure.sql dan79p98fykovu

Я не могу добавить pg_dump в PATH на Heroku. Как с этим бороться?


person Paul    schedule 13.09.2012    source источник
comment
Что в вашем Gemfile? Возможно, у вас есть гем, который пытается выполнить какой-то код после миграции, зависящей от этого pg_dump. Раньше я получал сообщение об ошибке после каждого запуска задачи rake, связанной с установкой Test::Unit, когда я использовал RSpec для тестирования — что-то вроде похожей проблемы.   -  person jakeonrails    schedule 20.09.2012
comment
Взгляните на этот вопрос SO: stackoverflow.com/questions/10248893/ Возможно, вы используете версию Rails с этой ошибкой/проблемой - какую версию вы используете?   -  person jakeonrails    schedule 20.09.2012


Ответы (1)


Проблема в том, что rails пытается сбросить новый structure.sql после завершения миграции и терпит неудачу, потому что pg_dump отсутствует. Бессмысленно создавать новый файлstructure.sql для развернутого приложения, поэтому лучшее решение — запретить Rails делать это.

Отредактируйте свой Rakefile и переопределите задачу. Добавление следующей строки в конце должно сделать это:

Rake::Task["db:structure:dump"].clear if Rails.env.production?
person kch    schedule 05.12.2012
comment
nb: это происходит только при использованииstructure.sql, а не при использовании schema.rb - person John Bachir; 06.12.2012
comment
Разве unless Rails.env.development? не было бы лучше? - person Turadg; 20.12.2012
comment
Почему pg_dump нет? - person Green; 18.06.2013
comment
Это не требуется производственному приложению. - person Neil Middleton; 24.10.2013