Heroku给出500个错误,信息很少+资产文件是空的[Rails]

时间:2014-09-09 21:35:29

标签: ruby-on-rails heroku

我刚刚部署了一个我正在研究Heroku的Rails应用程序 - http://sports-site.herokuapp.com/

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

  1. application-*.cssapplication-*.js在生产中都是空的,但CSS和JS在开发中完美运行。

  2. 我访问的几乎每个页面(主页和madden排名页面除外)都给出了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

  3. 我如何解决这两个问题?

    编辑:我认为这两个问题可能有关系。当我打开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"`
    

3 个答案:

答案 0 :(得分:3)

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

让我帮你调试:


<强>错误

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

  
      
  1. 平台(&#34; Heroku&#34;)错误
  2.   
  3. 语法(&#34; Rails&#34;)错误
  4.   

为了确保您能够正常工作,您需要了解这两种类型的错误&amp;如何解决这些问题:

-

<强>的Heroku

enter image description here

这是 Heroku 错误 - 由Heroku平台本身的问题引起。如果您有此错误,则表示您的应用程序根本无法运行,因为您遇到了Heroku的问题。这里可能存在的问题是Heroku没有正确的数据库/配置凭据,无法加载您的应用

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

-

<强>滑轨

enter image description here

Rails错误就是你所拥有的。

基本上,这是你的应用程序在Heroku平台上运行良好的时候,但是Rails后端有问题。问题可能是系统性的(与系统有关),或者&#34;语法&#34; (与你的语法有关)

要修复这些错误,您需要确保拥有所有文件,依赖项和附件。 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,您将能够看到您的应用正在调用的错误。反过来,这将允许您专门解决问题

对于您迄今为止提供的内容,我能做的最好。如果您更新我们的问题,我会更好地提供具体建议!

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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