我有一个非常简单的应用程序,在本地运行没有问题,但是当部署到Heroku后,它很快就会停止工作,并出现500错误和以下日志中的错误:
ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5.000 seconds (waited 5.003 seconds))
我已经搜索并找到了这个问题,它看起来非常相似。但我不太明白那个问题中对jpeg文件请求的相关性,也不理解答案中的问题所在。我可以通过重新启动服务器并多次调用返回404的页面来重现该问题。
我得到了与该问题中提到的相同结果(特别是Connections < DB_POOL):
(staging) $ heroku pg:info --remote staging
=== HEROKU_POSTGRESQL_ONYX_URL (DATABASE_URL)
Plan: Hobby-dev
Status: Available
Connections: 5
PG Version: 9.3.4
Created: 2014-05-02 08:57 UTC
Data Size: 9.9 MB
Tables: 11
Rows: 6508/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
(staging) $ heroku config
.....
DB_POOL: 10
.....
我根据railscast开发了我的解决方案,这似乎与其他问题中的方法相同。然而,我不理解提供在另一个问题中提供的答案以及它如何适用于我的解决方案,如下所示: routes.rb:
match ':status', to: 'errors#show', constraints: {status: /\d{3}/ }, via: :all
application.rb:
config.exceptions_app = self.routes
errorscontroller.rb
class ErrorsController < ApplicationController
def show
status = request.path[1..-1]
case status
when "404"
@error = "404 - The page you were looking for cannot be found"
when "403"
@error = "403 - The page you were looking for is not accessible"
when "500"
@error = "500 - An error occurred within the server"
end
respond_to do |format|
format.html { render action: "error" }
format.json { render json: {status: status, error: @exception.message} }
end
end
end
error.html.erb
<div class='container'>
<h1 class="errorh1">Oops something went wrong!!</h1>
<h2 class="errorh2"><%= @error %></h2>
<br>
<p>We are sorry. Please <a href='#' data-uv-trigger="contact
">let us know</a> what you were trying to do so that we can look into the problem.</p>
<br>
<p>When you are ready to continue, <a href="/">go home</a> to start again.</p>
</div>
注意:我正在运行Rails 4.0.4(并在本地使用psql(PostgreSQL)9.3.4)
respond_to
无法处理的MIME类型。这导致堆栈锁定。你的代码与他的破损代码类似,只处理.html
和.json
。他通过添加例如format.all { render nothing: true, status: 422 }
来修复它。你可以尝试一下。同时,你的error.html.?
视图代码也会很有帮助。 - Geneformat.json
下面添加了format.all...
。我会将error.html.erb
添加到问题中。 - Richbitsformat.all
没有解决问题。 - Richbitsheroku run rake db:migrate
吗? - Sachin Singh