【问题标题】:Rails App works locally, only partially runs after Heroku deploymentRails App 在本地运行,仅在 Heroku 部署后部分运行
【发布时间】:2013-04-06 23:43:34
【问题描述】:

我有一个在本地运行良好的 rails 应用程序,但是一旦我部署到 heroku,一个视图,即其中包含应用程序内容的视图,只会说“我们很抱歉,但出了点问题。”

根据 Heroku 日志,它似乎无法识别作为模型和控制器名称的“地点”。

我的 gemfile 有用于生产的 PG 和用于开发的 SQLite3。我似乎找不到如何解决它。以下是日志:

2013-04-06T14:42:51+00:00 app[web.1]: Started GET "/help" for 72.229.188.61 at 2013-04-06 14:42:51     +0000
2013-04-06T14:42:51+00:00 app[web.1]: Processing by PlacesController#index as HTML
2013-04-06T14:42:51+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR:  relation "places" does not exist
2013-04-06T14:42:51+00:00 app[web.1]:                      pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
2013-04-06T14:42:51+00:00 app[web.1]: Completed 500 Internal Server Error in 215ms
2013-04-06T14:42:51+00:00 app[web.1]: LINE 5:              WHERE a.attrelid = '"places"'::regclass
2013-04-06T14:42:51+00:00 app[web.1]: :             SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2013-04-06T14:42:51+00:00 app[web.1]:              WHERE a.attrelid = '"places"'::regclass
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 app[web.1]: Started GET "/help" for 72.229.188.61 at 2013-04-06 14:42:51 +0000
2013-04-06T14:42:51+00:00 app[web.1]:               FROM pg_attribute a LEFT JOIN pg_attrdef d
2013-04-06T14:42:51+00:00 app[web.1]:                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 app[web.1]:                AND a.attnum > 0 AND NOT a.attisdropped
2013-04-06T14:42:51+00:00 app[web.1]:                                         ^
2013-04-06T14:42:51+00:00 app[web.1]: ):
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 app[web.1]: Processing by PlacesController#index as HTML
2013-04-06T14:42:51+00:00 app[web.1]: ):
2013-04-06T14:42:51+00:00 app[web.1]:              ORDER BY a.attnum
2013-04-06T14:42:51+00:00 app[web.1]:   app/controllers/places_controller.rb:3:in `index'
2013-04-06T14:42:51+00:00 app[web.1]:   app/controllers/places_controller.rb:3:in `index'
2013-04-06T14:42:51+00:00 app[web.1]: Completed 500 Internal Server Error in 6ms
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR:  relation "places" does not exist
2013-04-06T14:42:51+00:00 app[web.1]: LINE 5:              WHERE a.attrelid = '"places"'::regclass
2013-04-06T14:42:51+00:00 app[web.1]:              WHERE a.attrelid = '"places"'::regclass
2013-04-06T14:42:51+00:00 app[web.1]:              ORDER BY a.attnum
2013-04-06T14:42:51+00:00 app[web.1]:                AND a.attnum > 0 AND NOT a.attisdropped
2013-04-06T14:42:51+00:00 app[web.1]:                                         ^
2013-04-06T14:42:51+00:00 app[web.1]: :             SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2013-04-06T14:42:51+00:00 app[web.1]:                      pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
2013-04-06T14:42:51+00:00 app[web.1]:               FROM pg_attribute a LEFT JOIN pg_attrdef d
2013-04-06T14:42:51+00:00 app[web.1]:                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2013-04-06T14:42:51+00:00 app[web.1]: 
2013-04-06T14:42:51+00:00 heroku[router]: at=info method=GET path=/help host=taskeyo.herokuapp.com fwd="72.229.188.61" dyno=web.1 connect=0ms service=291ms status=500 bytes=643
2013-04-06T14:42:51+00:00 heroku[router]: at=info method=GET path=/help host=taskeyo.herokuapp.com fwd="72.229.188.61" dyno=web.1 connect=1ms service=301ms status=500 bytes=643
2013-04-06T15:52:36+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-04-06T15:52:37+00:00 app[web.1]: [2013-04-06 15:52:37] ERROR SignalException: SIGTERM
2013-04-06T15:52:37+00:00 app[web.1]:   /usr/local/lib/ruby/1.9.1/webrick/server.rb:90:in `select'
2013-04-06T15:52:45+00:00 heroku[web.1]: Stopping remaining processes with SIGKILL
2013-04-06T15:52:45+00:00 heroku[web.1]: Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM
2013-04-06T15:52:47+00:00 heroku[web.1]: Process exited with status 137
2013-04-06T15:52:47+00:00 heroku[web.1]: State changed from up to down
2013-04-06T15:52:32+00:00 heroku[web.1]: Idling

如果其他人遇到过这个问题并且知道一个好的解决方法,我将非常感激。

【问题讨论】:

  • 你在 Heroku 上设置数据库了吗?尝试运行heroku rake db:createheroku rake db:migrate

标签: ruby-on-rails heroku


【解决方案1】:

Heroku 会在部署时为您运行迁移是一个常见的误解 - 它们不会,即使在初始部署之后,您也始终需要自己执行迁移。 heroku run rake db:migrate 会让你摆脱当前的问题。

【讨论】:

  • 谢谢约翰!现在一切就绪。我现在将在每次部署后迁移。谢谢!
  • 仅当您有新的迁移时 :) 但运行它们并没有什么坏处,因为如果您没有迁移,它们将不会做任何事情。就我个人而言,我已经调整了 ruby​​ heroku buildpack 以便在部署时为我迁移 github.com/johnbeynon/heroku-buildpack-ruby
  • 我去看看。谢谢约翰。
猜你喜欢
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2017-07-16
  • 2020-12-21
  • 1970-01-01
  • 2020-06-03
  • 2018-03-03
相关资源
最近更新 更多