【问题标题】:Rails app Heroku failureRails 应用程序 Heroku 失败
【发布时间】:2014-11-15 21:55:19
【问题描述】:

我有一个可以在本地运行但不能在 heroku 上正常运行的应用程序。根页面加载,但是当我尝试提交链接时,Heroku 给我“我们很抱歉,但出了点问题。 如果您是应用程序所有者,请查看日志以获取更多信息。”

查看日志,这似乎是一个资产问题,我运行了“RAILS_ENV=production bundle exec rake assets:precompile”,但我仍然收到这些日志错误。

2014-09-22T01:09:39.694028+00:00 app[web.1]: [2014-09-22 01:09:39] INFO  WEBrick 1.3.1
2014-09-22T01:09:39.694047+00:00 app[web.1]: [2014-09-22 01:09:39] INFO  ruby 2.0.0 (2014-      09-19) [x86_64-linux]
2014-09-22T01:09:39.694487+00:00 app[web.1]: [2014-09-22 01:09:39] INFO      WEBrick::HTTPServer#start: pid=2 port=24344
2014-09-22T01:09:39.797519+00:00 heroku[web.1]: State changed from starting to up
2014-09-22T01:09:40.724903+00:00 heroku[router]: at=info method=GET path="/" host=findmegnar.herokuapp.com request_id=502f7e98-22da-4825-ad85-77606ab64cca fwd="54.162.73.140" dyno=web.1 connect=2ms service=130ms status=200 bytes=1907
2014-09-22T01:09:44.875965+00:00 heroku[router]: at=info method=GET path="/" host=findmegnar.herokuapp.com request_id=900ca4d9-db6c-4c53-aeb4-f6e50c0a7e4f fwd="74.95.112.118" dyno=web.1 connect=0ms service=16ms status=304 bytes=733
2014-09-22T01:09:44.978618+00:00 heroku[router]: at=info method=GET path="/assets/application-cb25950d0e442f07f1fa7be553c321c3.css" host=findmegnar.herokuapp.com request_id=13b510e0-f3c8-4f1a-8a29-9d99a30fb794 fwd="74.95.112.118" dyno=web.1 connect=1ms service=9ms status=404 bytes=1829
2014-09-22T01:09:44.987883+00:00 heroku[router]: at=info method=GET path="/assets/application-433aac58cfba85b04e81533418015cc6.js" host=findmegnar.herokuapp.com request_id=2cbaa67e-646e-4faf-adee-c9c4606fe662 fwd="74.95.112.118" dyno=web.1 connect=0ms service=6ms status=404 bytes=1829
2014-09-22T01:09:47.967521+00:00 heroku[router]: at=info method=POST path="/searches" host=findmegnar.herokuapp.com request_id=2948d744-102f-420b-a856-63a55ab3e0c5 fwd="74.95.112.118" dyno=web.1 connect=1ms service=16ms status=500 bytes=1754

编辑:进一步的工作发现这个错误是由于缺少数据库引起的。跑步 heroku 运行 rake db:reset 修复了那个问题。然而,运行 heroku 运行 rake 导入:度假村

对我想添加到数据中的数据进行了 rake 导入,但实际上并没有将数据添加到数据库中。

有谁知道在heroku中是否有一种特殊的方式来做rake任务?

【问题讨论】:

  • 我似乎记得必须先运行“rake assets:clean”,然后再运行“rake assets:precompile RAILS_ENV=development”才能解决问题。
  • 道歉-以上应该是ENV=production
  • 通过开发环境登录 Herokuvia。 Thue se 命令,例如“heroku 运行 rake 资产:预编译”

标签: ruby-on-rails ruby heroku


【解决方案1】:

Heroku

如果您再次在 Heroku 上加载数据库,您可能最好使用 rake db:schema:load 任务 - 这将从您的 schema 构建数据库,而不是您的迁移。

#db/schema.rb
# If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch

要从开发命令行访问 Heroku 功能,最好使用 Heroku Toolbelt -

$ heroku run rake db:schema:load
$ heroku run ...

这使您能够从您的开发(本地)机器上执行 Heroku 操作。它通过 Heroku API 路由您的请求,允许您根据需要在 Heroku 命令行上执行请求


错误

如果您在 Heroku 上遇到错误,就像一些信息一样,您最好看看它们是如何工作的,并了解如何解决它们。

Heroku 有两种类型的错误:

Heroku

这些是由于您的应用程序没有在 Heroku 本身上打开引起的

这里的问题是 Heroku 将有一组特定的“依赖项”来运行您的应用程序。这些依赖项的形式包括数据库、文件、插件、ENV 变量等。

如果您的应用没有任何这些可用,无论出于何种原因,您最终都会收到如上所述的“平台”错误。 Heroku 完全可以解决此问题 - 您需要确保拥有使应用正常运行所需的文件、设置和附加组件

-

导轨

Rails 错误是特定于您的应用程序的,并且可能是由于您的应用程序中的语法错误造成的。这里的区别是platform 错误将由Heroku 引起,而Rails 错误将由您的应用程序 引起。

如果您看到上述错误,最简单的解决方法是找到以下文件并临时进行更改:

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

再次将其推送到 Heroku,您将能够通过标准 Rails 错误处理接口查看应用程序中的错误

【讨论】:

  • 谢谢,这肯定是问题所在,也是解决问题的最佳方法。我最终通过 heroku run rake db:reset 重写 rake 任务以匹配 heroku 的调度程序插件,然后 heroku run rake TASK_NAME 来填充数据库。特别感谢错误处理信息,它会派上用场的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多