我刚刚部署了一个我正在研究Heroku的Rails应用程序 - http://sports-site.herokuapp.com/。
这是更新后的GitHub - https://github.com/adamzerner/sports_site。
application-*.css
和application-*.js
在生产中都是空的,但CSS和JS在开发中完美运行。
我访问的几乎每个页面(主页和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
我如何解决这两个问题?
编辑:我认为这两个问题可能有关系。当我打开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>
我不明白为什么会这样。我不知道它是player
是nil
还是team
是nil
,但似乎都不是根据此控制台输出:
`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"`
答案 0 :(得分:3)
您的应用加载正常,这意味着您的问题可能是您应用内部的小问题。
让我帮你调试:
<强>错误强>
由于Heroku是平台即服务,它会向您显示两种类型的错误 -
- 平台(&#34; Heroku&#34;)错误
- 语法(&#34; Rails&#34;)错误
醇>
为了确保您能够正常工作,您需要了解这两种类型的错误&amp;如何解决这些问题:
-
<强>的Heroku 强>
这是 Heroku 错误 - 由Heroku平台本身的问题引起。如果您有此错误,则表示您的应用程序根本无法运行,因为您遇到了Heroku的问题。这里可能存在的问题是Heroku没有正确的数据库/配置凭据,无法加载您的应用
如果您有Heroku错误,则表示您必须正确设置应用程序。幸运的是,你没有这个,这意味着你可以专注于下一类错误:
-
<强>滑轨强>
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 这将为您提供实时日志。