繁体   English   中英

Heroku给出了500个错误,几乎没有信息+资产文件为空[Rails]

[英]Heroku giving 500 error with little information + asset files are empty [Rails]

我刚刚将正在使用的Rails应用程序部署到了Heroku- http: //sports-site.herokuapp.com/。

这是更新的GitHub- https://github.com/adamzerner/sports_site

  1. application-*.cssapplication-*.js在生产中都是空的,但是CSS和JS在开发中可以完美地工作。

  2. 我访问的几乎所有页面(首页和疯狂的排名页面除外)都会给我500错误。 而且日志几乎没有给我任何信息。 以下是我得到的一切:

    2014-09-09T21:34:09.019757+00:00 heroku[router]: at=info method=GET path="/spurs" host=pure-everglades-8286.herokuapp.com request_id=d6a0348f-db82-4519-844d-d85973c75413 fwd="67.86.210.96" dyno=web.1 connect=1ms service=11ms status=500 bytes=1002 2014-09-09T21:34:09.323769+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=pure-everglades-8286.herokuapp.com request_id=934ea050-cbab-4c26-b925-5bc5f2d16369 fwd="67.86.210.96" dyno=web.1 connect=1ms service=9ms status=500 bytes=858

我该如何解决这两个问题?

编辑:我认为这两个问题可能有关。 当我打开Chrome的开发工具并转到“资源”标签时,它说:

Failed to load resource: the server responded with a status of 500 (Internal Server Error

<link data-turbolinks-track="true" href="/assets/application-1babc5fe447a141359d73e5a3339663c.css" media="all" rel="stylesheet" />

<script data-turbolinks-track="true" src="/assets/application-f3556e3d9d239b5384897deb4b41e10f.js"></script>

编辑

当我转到http://sports-site.herokuapp.com/trailblazers/lamarcus_aldridge时,出现此错误。

undefined method `name' for nil:NilClass

指这条线

<h1><%= @player.name %> <small><%= link_to "#{@player.team.location} #{@player.team.name}", "/#{@player.team.name.downcase}" %></small></h1>

我不明白为什么会这样。 我不知道这是在说playernil还是teamnil ,但似乎都不是根据以下控制台输出得出的:

`2.1.2 :001 > l = Player.where("name like ?", "%lamarcus_aldridge%")[0]
Player Load (14.8ms)  SELECT "players".* FROM "players"  WHERE (name like '%lamarcus_aldridge%')
 => #<Player id: 383, team_id: 29, position_id: 4, position_rank: 2, overall_rank: 6, analysis: "Star player.|\n\tGood size and strengt
.
.
.
2.1.2 :002 > l.name
 => "LaMarcus Aldridge"
2.1.2 :003 > l.team.name
  Team Load (0.4ms)  SELECT  "teams".* FROM "teams"  WHERE "teams"."id" = ? LIMIT 1  [["id", 29]]
 => "Trailblazers"`

您的应用程序加载正常,这意味着您的问题很可能是应用程序内部的一个小问题。

让我帮您调试:


失误

由于Heroku是平台即服务 ,因此它将向您显示两种类型的错误-

  1. 平台(“ Heroku”)错误
  2. 语法(“轨”)错误

为了确保您能够正常工作,您需要了解以下两种类型的错误以及如何解决它们:

--

Heroku

在此处输入图片说明

这是一个Heroku错误-由Heroku平台本身的问题引起。 如果出现此错误,则意味着您的应用程序将完全无法运行,因为Heroku出现了问题。 这里可能的问题是Heroku没有正确的数据库/配置凭据,从而阻止了它加载您的应用程序

如果出现Heroku错误,则意味着必须正确设置应用程序。 幸运的是,您没有这个,这意味着您可以专注于下一种错误:

--

滑轨

在此处输入图片说明

您所遇到的是Rails错误。

基本上,这是当您的应用程序在Heroku平台上运行良好,但Rails后端出现问题时。 该问题可能是系统性的(与系统有关),也可能是“语法”的(与您的语法有关)

要解决这些错误,您需要确保正确设置了所有文件,依赖项和ENV变量。


固定

查看您的应用程序,可能有一个更深层次的问题需要解决。

我本来以为您的资产有问题,但由于其他页面也显示错误,因此我们需要确定问题所在。

您可以做的最简单的事情是为Heroku打开development环境:

#config/environments/production.rb
config.consider_all_requests_local       = true # false

> $ git add .
> $ git commit -a -m "Local Debug"
> $ git push heroku master

调试后必须更改此设置

这将使您能够实际查看错误所在。 我想这可能是控制器问题,还是与数据库数据有关(也许在推送到Heroku时尚未迁移)等。

如果使用上述方法,请将您的代码推送到Heroku,您将能够看到您的应用正在调用的错误。 反过来,这将使您可以专门解决问题

到目前为止,我可以为您提供的最好的服务。 如果您更新了我们的问题,我们将为您提供更好的建议!

至于第二个问题,当您更改Rails应用程序环境时,这也会同时更改它连接的数据库。 因此,首先,您确定要在同一环境下运行应用程序和Rails控制台吗?

话虽如此,我们将需要查看您的控制器操作(在其中设置@player)。 从控制台粘贴的代码片段并不意味着您正在控制器中正确执行此操作。

Heroku 500错误是标准的Heroku错误。 您必须检查日志以获取实际错误。 下面的链接将为您提供有关Heroku记录在日志中的错误的更多信息。 https://devcenter.heroku.com/articles/error-codes

在终端cd中,进入您的应用程序,然后输入heroku logs --tail这将为您提供实时日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM