Ruby on rails Heroku部署错误H10(应用程序崩溃)

Ruby on rails Heroku部署错误H10(应用程序崩溃),ruby-on-rails,deployment,heroku,Ruby On Rails,Deployment,Heroku,我的本地计算机上有一个RoR应用程序,但当我把它发送给heroku时,它崩溃了。错误日志显示错误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

我的本地计算机上有一个RoR应用程序,但当我把它发送给heroku时,它崩溃了。错误日志显示错误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=
编辑:

以前有没有人有过这种情况,并且知道是什么导致了这个问题?我找不到解决办法


谢谢。

我今天遇到了同样的问题。我确实运行了rake db:migrate,尽管我之前迁移了模型,但应用程序没有崩溃。

我面临的问题的根源是没有数据库。要解决此问题,我首先导出了本地数据库:

$ 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'
git push heroku
在这些示例中要替换的变量有:mypassword、myuser、mydb&http://site.tld/mydb.dump. 注意,我必须将转储上传到临时服务器


解决所有问题我写了一篇关于如何将Enki部署到Heroku的快速指南。

我通过推动Git解决了这个问题:

git add .
git commit -am "some text"
git push
然后推到Heroku:

$ heroku pgbackups:restore DATABASE 'http://site.tld/mydb.dump'
git push heroku
然后rake db:migrate on Heroku:

heroku run rake db:migrate

我遇到了上面同样的错误,应用程序在heroku上崩溃,在dev中运行良好,但heroku上的错误日志没有透露任何线索。我在这页上读到了其他答案,看到重新构建应用程序后,我大汗淋漓。我想也许我可以进入heroku控制台四处看看。我做到了,甚至控制台也崩溃了,但这次它告诉了我原因。这是几个小时前我在一次故障排除会议上忘记删除的一个模糊变量。我不是说你会遇到同样的问题,但我在尝试通过控制台时发现了更多信息。希望这有帮助

$ heroku run rails console

这是最好的选择,因为它会在您的终端中给您一个错误,该错误比Heroku日志中的“应用程序崩溃”错误要详细得多。

我设法不包括我的.gitignore文件->这会破坏Heroku。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

然后,您可以在文本编辑器中打开它,并将上面的代码放入其中。

在复制和粘贴代码时要非常小心。有时,将块添加到文件中时,它的格式不正确,会产生错误

我以前遇到过这个问题,但出现了以下错误:意外的消息提示,需要关键字\u end

bash: bin/rails: No such file or directory
在日志中运行heroku logs-t命令如果是,请运行

bundle exec rake rails:update
不要覆盖你的文件,最后这个命令会创建

  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake

将这些文件推送到heroku,您就完成了。

也有同样的问题。对我来说,这是错误的前_行动过滤器,因为空数据库
检查你的行动前过滤器,也许它们会抛出未终止的例外

当我在错误的端口收听时,这种情况发生在我身上

我更改了listen to process.env.PORT,以便:

http.listen((process.env.PORT || 5000), function(){
  console.log('listening on *:5000');
});
而不是

http.listen(5000, function(){
  console.log('listening on *:5000');
});

我在尝试在子目录中运行Rails时遇到了这个问题,而不是在/中。例如,我在/client中运行Angular/Node/Gulp应用程序,在/server中运行Rails应用程序,但它们都在同一个git repo中,因此我可以跟踪前端和后端的更改。我在尝试将它们部署到Heroku时出错。对于其他有此问题的人,这里有一个自定义构建包,它允许在子目录中运行Rails


我在heroku上遇到了同样的问题,同样的错误,在本地机器上工作,我尝试了这里列出的所有解决方案,包括 heroku运行轨道控制台 运行时没有错误消息。我试过几次heroku运行rake db:migrate和heroku运行rake db:migrate:reset。所有这些都没有解决问题。在查看一些在生产环境中使用但在开发环境中没有使用的文件时,我发现puma.rb文件中的一些空白是罪魁祸首。希望这能帮助有同样问题的人。 改变这一点让它起作用

  ActiveRecord::Base.establish_connection
  End


我也有同样的问题。日志也没有给我任何线索。 所以我缩小和放大了dynos。这为我解决了问题:

heroku ps:scale web=0
等了几秒钟

heroku ps:scale web=1

我在Heroku遇到了同样的H10应用程序崩溃错误。我在heroku界面中点击“重启所有dynos”,问题就解决了

$ heroku restart

帮我让我的dyno再次运转。我是新来Heroku的,但很高兴现在知道了。

今晚也有同样的问题。这不是一个非常有用的错误,所以我尝试在控制台中运行

heroku run rails c

它失败了,给了我一个更有用的错误。我在生产中忽略了删除一个方法调用。一旦我解决了这个问题,这个应用程序就运行得很好。

我在部署到Heroku应用程序崩溃时遇到了同样的问题。日志没有指出问题可能是什么。Heroku控制台在额外括号的代码中显示语法错误。令人惊讶的是,我在运行应用程序时在本地rails上没有问题,因此错过了它。在更正并将git推送到Heroku后,应用程序开始在Heroku上运行

我从更新了我的设置 应用程序设置“ip|U地址”,process.env.ip|||'127.0.0.1'

应用程序设置“ip|U地址”,process.env.ip|||'0.0.0'

<
p> 在我的例子中,我在我的应用程序中使用了ENV变量,但它没有在heroku配置中设置

heroku控制台给出了正确的错误:

heroku console
`validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)
然后设置环境配置

heroku config:set AWS_ACCESS_KEY_ID='key'
重新启动Heroku

heroku restart

它起作用了

我收到了与应用程序崩溃相同的上述错误,heroku应用程序日志没有显示与错误原因相关的太多信息。然后,我在heroku中重新启动了dynos,然后在我的设置中的一个index.js文件中显示了错误,即“附加大括号”。该问题在heroku上删除并重新部署应用程序后得到修复

希望这将对面临同样问题的人有所帮助。

由于主代码文件的名称错误,我在Heroku和Node中使用了H10。编辑package.json:


或者重命名文件。

在浏览了所有答案后,我偶然发现了这个网站:它详细介绍了Heroku的当前状态/事件。在你的头撞到墙上之前,检查一下是否有意外总是安全的。对我来说,是发布在上述链接上的附加事件报告导致了错误


就我而言,我使用的Procfile破坏了一切。Heroku在启动应用程序时查找Procfile并应用其设置-显然,我使用的开发设置对prod服务器没有任何意义。我不得不将它重命名为Procfile.dev,一切都开始正常工作。

我遇到了同样的问题,我做了以下操作

heroku run rails c
它在控制器允许的参数中识别出语法错误和缺少逗号。如上所述,Heroku日志没有提供足够的信息来解决问题


我以前没有在Heroku上看到应用程序崩溃的消息

当我开始在heroku中使用Puma时,我也遇到了同样的问题,当我评论下面显示的端口行时,这个问题得到了解决

# port        ENV['PORT']     || 3000
因此,在config目录中禁用puma.rb中的上述行解决了这个问题

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
# port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'production'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

如果您使用的是Node,那么可以尝试直接在控制台中运行serve命令。在我的例子中,我正在运行一个angular应用程序,因此我尝试了:

heroku run npm start

这向我显示了应用程序启动期间的确切错误。

在我的情况下,我在执行git push heroku master时,不在主分支上。
我必须先去master branch,将代码与我的另一个分支合并,然后推送git。

我像@Ahmed Elkoussy一样将问题追溯到Puma服务器,但我只需在Puma.rb文件中注释以下行就解决了问题:


pidfile ENV.fetchPIDFILE{tmp/pids/server.pid}

我也遇到了同样的错误。将.gitignore文件添加到我的项目解决了我的问题

我的.gitignore文件位于此处:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml
我改变了监听功能

app.listen(5000, function() {
console.log("Server running on port 5000...");
});
我把它改成了

    const PORT = process.env.PORT || 5000

...

    app.listen(PORT, function() {
    console.log("Server running on port 5000...");
    });

解决方案对我有效,请尝试运行以下命令:

Heroku重新启动



几个月前也有同样的错误。刚刚启动了新的HEROKU应用程序,它很有帮助。看起来你在dyno池中破坏了dyno。不幸的是,这并没有解决我的问题。在Heroku或你的应用程序中配置New Relic需要做什么?NewRelic是服务器和应用程序监控软件,所以你们可能看到的是NewRelic插话说应用程序崩溃了。另外,-请参阅答案中的说明。谢谢您的回复tharrison。我似乎仍然无法回避这个问题。关于你发布的链接,我想指出,Heroku gem已经贬值,并且已经从SQLite3迁移到PostgreSQL。试试这个:Heroku config:add BUILDPACK_URL=我不知道这会有什么不同。但很高兴它对你有用:我重新命名了我的应用程序,遇到了这个问题,运行heroku运行rake db:migrate,它就工作了:这只是因为你有东西要迁移到heroku数据库。这是一个很好的答案,在heroku日志缺少详细信息时帮助了我。谢谢。我只是想说,我又遇到了这个问题,谷歌搜索了一下,找到了这个答案,看到我投了更高的票,它再次解决了我的问题。谢谢@user3721026。如果你看到这个评论,请再次投票给我,因为我不能:当我找到这个答案的时候,我也流了同样的汗,太好了!我在python中也遇到过同样的问题,但在这里却遇到了。与之相当的是$heroku run python manage.py shell,它立即向我显示了问题所在。heroku restart帮助我确定了问题所在。我的bin文件夹丢失。这似乎不是答案。只是一个如何加强问题的建议。你应该使用评论部分来达到这个目的。这是一个答案,实际上是正确的答案。但与上面相同,这是最好的答案,因为它解释了命令的作用v/s NTIMB20回答了缺少解释的问题。在不理解的情况下复制和粘贴代码被称为cargo cult编程,它会给您带来比一点格式化多得多的问题aka restart:谢谢!heroku重启是对我有效的解决方案,我猜在幕后这也是一个类似的把戏。将执行重新启动
在升级到最新的heroku-18后,我遇到了这种情况。运行这个,工作完美!这是为了我!我在本地和Heroku上使用了不同版本的Ruby,这导致了一个SyntaxError。日志没有提供太多信息,但rails c提供了。对我来说,问题是我创建了一个名为Mail的模型/表。这在本地运行得很好,但在Heroku上引起了工作冲突,因为它认为我试图使用ActionMailer来实现这个模型。运行heroku控制台给了我一个详细的错误,使我能够找出H10应用程序崩溃错误的根源,感谢这解决了我的问题。我最终得到了真正的错误超类不匹配,与faviconI无关的任何东西也有完全相同的问题。Rails控制台没有显示任何错误。应用程序的日志中没有错误。尝试通过命令行重新启动,尝试缩小到0,然后进行备份。什么都没用。唯一有效的方法是登录Heroku并单击右上角下拉列表中的restart all dynos。谢谢你的帮助!在我的例子中,Heroku上有一个未初始化的常量错误,在本地不存在。虽然我仍然需要解决这个问题,但我还是能够重新得到一个有效的部署。谢谢@paridhishah
app.listen(5000, function() {
console.log("Server running on port 5000...");
});
    const PORT = process.env.PORT || 5000

...

    app.listen(PORT, function() {
    console.log("Server running on port 5000...");
    });