Ошибка развертывания Heroku H10 (приложение разбилось)
У меня есть приложение RoR, работающее на моем локальном компьютере, но когда я отправляю его в герою, он падает. Журнал ошибок дает ошибку H10 и говорит:
2012-11-21T15:26:47+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/newrelic_rpm-3.4.2/lib/new_relic/control/instance_methods.rb:95:in `start_agent'
2012-11-21T15:26:48+00:00 heroku[web.1]: State changed from starting to crashed
2012-11-21T15:26:48+00:00 heroku[web.1]: Process exited with status 1
2012-11-21T15:26:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:27:00+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:30:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
Edit:
2012-11-22T10:00:58+00:00 app[web.1]:
2012-11-22T10:00:59+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno=web.1 queue=0 wait=0ms connect=1ms service=26ms status=200 bytes=0
Кто-нибудь имел это раньше и знал, что может вызвать проблему? Я не могу найти решение.
Спасибо.
Ответы
Ответ 1
Корень проблемы, с которой я столкнулся, состоял в том, что у меня не было базы данных. Чтобы решить проблему, я сначала экспортировал свою локальную базу данных:
$ heroku addons:add heroku-postgresql:dev
$ heroku addons:add pgbackups
$ PGPASSWORD=mypassword pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump
Затем импортировал его в Heroku:
$ heroku pgbackups:restore DATABASE 'http://site.tld/mydb.dump'
Переменные для замены в этих примерах: mypassword
, myuser
, mydb
и http://site.tld/mydb.dump
. Обратите внимание, что мне пришлось загрузить дамп на временный сервер.
Решение всех моих проблем. Я написал краткое руководство по развертыванию Enki в Heroku, которое можно найти здесь.
Ответ 2
Я столкнулся с той же ошибкой выше, приложение зависало на heroku (работает нормально в dev), но журналы ошибок на heroku не выявляли никаких подсказок. Я прочитал другие ответы на этой странице и вспотел, увидев "восстановление приложения". Я подумал, что, может быть, я смогу сесть в консоль герою и осмотреться. Я сделал, и даже консоль рухнула, но на этот раз он сказал мне, почему. Это была какая-то неясная переменная, которую я забыл удалить во время сеанса устранения неполадок часами ранее. Я не говорю, что вы столкнетесь с той же проблемой, но я нашел больше информации, когда попытался пройти через консоль. Надеюсь это поможет.
$ heroku run rails console
Ответ 3
У меня была такая же проблема. Журналы тоже не дали мне никаких подсказок.
Таким образом, я уменьшил масштаб и уменьшил количество динамиков. Это решило проблему для меня:
heroku ps:scale web=0
Ожидалось несколько секунд...
heroku ps:scale web=1
Ответ 4
$heroku run rails console
Это лучший вариант, так как он даст вам ошибку в вашем терминале, которая будет намного более подробной, чем ошибка приложения с ошибкой в ваших журналах Heroku.
Ответ 5
$ heroku restart
помог мне снова запустить мой dyno. Я новичок в Heroku, но рад, что знаю сейчас.
Ответ 6
это случилось со мной, когда я слушал не тот порт
Я изменил свой слух() на "process.env.PORT" так:
http.listen((process.env.PORT || 5000), function(){
console.log('listening on *:5000');
});
вместо
http.listen(5000, function(){
console.log('listening on *:5000');
});
Ответ 7
Была такая же проблема сегодня вечером. Не очень полезная ошибка, поэтому я попытался запустить консоль
heroku run rails c
он потерпел неудачу и дал мне гораздо более полезную ошибку. Я забыл удалить вызов метода в процессе производства. Как только я это исправил, приложение отлично работало.
Ответ 8
Я решил эту проблему, нажав Git:
git add .
git commit -am "some text"
git push
затем нажмите на Heroku:
git push heroku
затем rake db: migrate на Heroku:
heroku run rake db:migrate
Ответ 9
Мне не удалось включить мой файл .gitignore → , который разбивает герою. #doh
Вот рабочий файл .gitignore
/.bundle
/vendor/bundle/
/vendor/ruby/
db/*.sqlite3
/db/*.sqlite3-journal
/log/*
/tmp/*
**.war
*.rbc
*.sassc
.redcar/
.sass-cache
/config/config.yml
/config/database.yml
/coverage.data
/coverage/
/db/*.javadb/
/db/*.sqlite3
/doc/api/
/doc/app/
/doc/features.html
/doc/specs.html
/public/cache
/public/stylesheets/compiled
/public/system/*
/spec/tmp/*
/cache
/capybara*
/capybara-*.html
/gems
/specifications
rerun.txt
pickle-email-*.html
.zeus.sock
**.orig
.DS_Store
/nbproject/
.idea
/*.tmproj
**.swp
.env
.powenv
Чтобы создать файл .gitignore, в терминале перейдите в каталог приложений и используйте следующую команду
touch .gitignore
Затем вы можете открыть его в текстовом редакторе и вставить в него код.
Ответ 10
Я получал эту же ошибку приложения H10 с ошибкой в Heroku. Я нажал "перезагрузить все динамики" в интерфейсе heroku, и проблема решена.
Ответ 11
В моем случае я использовал переменные ENV в своем приложении, но не был установлен в конфигурации heroku.
Консоль heroku дала правильную ошибку:
heroku console
`validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)
Затем установите конфигурацию ENV
heroku config:set AWS_ACCESS_KEY_ID='key'
Перезапустите Heroku
heroku restart
он работает!!
Ответ 12
Посмотрите, получаете ли вы
bash: bin/rails: No such file or directory
в журналах во время работы (heroku logs -t), если да, то выполните Run
bundle exec rake rails:update
Не перезаписывайте свои файлы, в конце концов эта команда создаст
create bin
create bin/bundle
create bin/rails
create bin/rake
перетащите эти файлы в герою, и вы закончите.
Ответ 13
У меня такая же ошибка выше, как и "приложение разбилось", и журналы приложений heroku не показывают много информации, связанной с причинами ошибки. Затем я перезапустил dynos в heroku, а затем он показал ошибку, говорящую о дополнительной фигурной скобке в одном из файлов index.js в моей настройке. Проблема была исправлена после ее удаления и перераспределения приложения на heroku.
Надеюсь, что это будет полезно для тех, кто сталкивается с одной и той же проблемой.
Ответ 14
Изучив весь список ответов, я наткнулся на этот веб-сайт: https://status.heroku.com/, где подробно рассказывается о текущем состоянии/инцидентах с Heroku. Всегда безопасно проверить наличие инцидентов, прежде чем ударить головой о стену. Для меня это был прикрепленный отчет об инциденте, опубликованный по вышеупомянутой ссылке, который стал причиной ошибки.
![SERVER INCIDENT UPDATE]()
Ответ 15
У меня была такая же проблема, я сделал следующее
heroku run rails c
Это идентифицировало синтаксическую ошибку и пропущенную запятую в разрешенных параметрах контроллера. Как уже упоминалось выше, журналы Heroku не предоставили достаточной информации для решения проблемы.
Я не видел сообщения о сбое приложения на Heroku ранее.
Ответ 16
Сегодня я столкнулся с той же проблемой. Я сделал heroku run rake db:migrate
, хотя раньше мигрировал модель, и приложение не сработало.
Ответ 17
Будьте очень осторожны при копировании и вставке кода. Иногда, когда вы добавляете блок в файл, он отформатирован неправильно и приведет к ошибке.
У меня была эта проблема раньше и получила эту ошибку: неожиданный tIDENTIFIER, ожидающий ключевое слово_енд
Ответ 18
Была такая же проблема. для меня это была ошибка в фильтрах before_action (потому что пустая БД)
Проверяйте фильтры before_action, возможно, они бросают unhendled exeptions.
Ответ 19
У меня возникла эта проблема при попытке запустить Rails в подкаталоге, а не в /
. Например, у меня было приложение Angular/Node/Gulp, работающее в /client
, и приложение Rails, работающее в /server
, но оба они были в одном репозитории git, поэтому я мог отслеживать изменения через передний и задний концы. Я получил эту ошибку, пытаясь развернуть их в Хероку. Для всех, у кого есть эта проблема, вот пользовательский buildpack, который позволит запускать Rails в подкаталоге.
https://github.com/aarongray/heroku-buildpack-ruby
Ответ 20
У меня была такая же проблема (такая же ошибка на герою, работающая на локальной машине), и я попробовал все перечисленные здесь решения, включая
heroku run rails console
который работал без сообщений об ошибках. Я несколько раз пробовал heroku run rake db:migrate
и heroku run rake db:migrate:reset
несколько раз. Ничто из этого не решило проблему. Просматривая некоторые файлы, которые используются в процессе производства, но не в среде dev, я нашел в файле puma.rb некоторые пробелы. Надеюсь, это поможет кому-то, у кого есть такая же проблема.
Это изменило его работу.
ActiveRecord::Base.establish_connection
End
к
ActiveRecord::Base.establish_connection
end
Ответ 21
Я столкнулся с той же проблемой при развертывании в Heroku (сбой приложения). Журналы не указывали, в чем проблема. Консоль Heroku отображала синтаксическую ошибку в коде дополнительной скобки. Удивительно, но у меня не было проблемы с локальными рельсами во время запуска приложения, и, следовательно, он пропустил его. После коррекции и git нажмите на Heroku, приложение начало работать на Heroku!
Ответ 22
Я обновил свои настройки с
app.set('ip_address', process.env.IP || '127.0.0.1');
to
app.set('ip_address', process.env.IP || '0.0.0.0');
который я изменил для хоста Openshift
Ответ 23
У меня был H10
с Heroku и Node из-за неправильного имени основного файла кода. Изменить package.json
:
{
...
"main": "correct_file_name.js",
...
"scripts": {
"start": "node correct_file_name.js"
}
}
Или переименуйте файл.
Ответ 24
В моем случае Procfile
я использовал, Procfile
все. Heroku ищет Procfile
и применяет его настройки при запуске приложения - очевидно, что настройки dev, которые я использовал, не имели никакого смысла для сервера prod. Мне пришлось переименовать его в Procfile.dev
и все стало работать нормально.