Heroku部署elovation应用访问报We're sorry错误求助
问题描述
- 基于开源elovation项目搭建本地8球台球联赛Elo评分系统
- 部署前仅做两处调整:一是在
app.json中指定heroku:stack-18配置,二是将依赖源地址从git://替换为https://后执行bundle install命令完成依赖安装 - 向Heroku部署的全过程无报错,但访问应用时直接显示“We're sorry, but something went wrong”错误页面
- 部署完成后先后执行
heroku run rake db:migrate数据库迁移命令、heroku restart应用重启命令,错误仍未解决 - 因对Ruby、Heroku Postgres技术栈不熟悉,提取
heroku logs命令输出的错误日志如下:
2022-06-21T12:54:08.886300+00:00 app[web.1]: I, [2022-06-21T12:54:08.886206 #9] INFO -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Processing by DashboardController#show as HTML 2022-06-21T12:54:08.888800+00:00 app[web.1]: D, [2022-06-21T12:54:08.888726 #9] DEBUG -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Player Load (0.5ms) SELECT "players".* FROM "players" 2022-06-21T12:54:08.889854+00:00 app[web.1]: I, [2022-06-21T12:54:08.889789 #9] INFO -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Rendering dashboard/show.html.erb within layouts/application 2022-06-21T12:54:08.891005+00:00 app[web.1]: D, [2022-06-21T12:54:08.890942 #9] DEBUG -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Game Load (0.5ms) SELECT "games".* FROM "games" ORDER BY updated_at DESC 2022-06-21T12:54:08.891468+00:00 app[web.1]: I, [2022-06-21T12:54:08.891374 #9] INFO -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Rendered dashboard/show.html.erb within layouts/application (1.5ms) 2022-06-21T12:54:08.893279+00:00 app[web.1]: I, [2022-06-21T12:54:08.893225 #9] INFO -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] Completed 500 Internal Server Error in 7ms (ActiveRecord: 1.1ms) 2022-06-21T12:54:08.894220+00:00 app[web.1]: F, [2022-06-21T12:54:08.894169 #9] FATAL -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 2022-06-21T12:54:08.894271+00:00 app[web.1]: F, [2022-06-21T12:54:08.894239 #9] FATAL -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] ActionView::Template::Error (The asset "chartkick.js" is not present in the asset pipeline. 2022-06-21T12:54:08.894272+00:00 app[web.1]: ): 2022-06-21T12:54:08.894439+00:00 app[web.1]: F, [2022-06-21T12:54:08.894403 #9] FATAL -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 11: <%= csrf_meta_tags %> 2022-06-21T12:54:08.894440+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 12: <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700' rel='stylesheet' type='text/css'> 2022-06-21T12:54:08.894441+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 13: 2022-06-21T12:54:08.894441+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 14: <%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %> 2022-06-21T12:54:08.894442+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 15: </head> 2022-06-21T12:54:08.894442+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 16: <body> 2022-06-21T12:54:08.894443+00:00 app[web.1]: [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 17: <div id='container'> 2022-06-21T12:54:08.894482+00:00 app[web.1]: F, [2022-06-21T12:54:08.894452 #9] FATAL -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] 2022-06-21T12:54:08.894523+00:00 app[web.1]: F, [2022-06-21T12:54:08.894495 #9] FATAL -- : [dc5be6b7-715a-47a0-8936-e0ba1c6b2c13] app/views/layouts/application.html.erb:14:in `_app_views_layouts_application_html_erb___4496802780226790006_47054455194320'
错误原因
日志明确抛出核心报错:ActionView::Template::Error (The asset "chartkick.js" is not present in the asset pipeline.),即Rails生产环境的资产管道中找不到chartkick.js静态资源。
报错触发点是布局文件app/views/layouts/application.html.erb第14行,该行代码通过javascript_include_tag加载chartkick脚本,但对应资源未被正确纳入生产环境的资产编译流程,导致页面渲染直接中断返回500错误,和数据库配置、Heroku栈版本无关联。
修复方案
按以下步骤操作即可解决:
- 检查项目根目录下的
Gemfile,确认已添加chartkick相关依赖,缺失则补充后本地执行bundle install完成依赖安装 - 检查
config/environments/production.rb配置,确认生产环境静态资源相关配置正确:开启静态资源服务、将chartkick相关文件加入资产预编译白名单 - 本地执行
RAILS_ENV=production bundle exec rake assets:precompile手动预编译生产环境静态资源,确认public/assets目录下生成了chartkick对应的编译后js文件 - 将所有修改提交后重新推送到Heroku,平台会在部署阶段自动完成静态资源编译,部署完成后即可正常访问应用,无需额外执行重启命令
内容的提问来源于stack exchange,提问作者Fred L
相关产品推荐
相关产品推荐

