Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4 custom 404导致Heroku上的postgresql连接失败_Ruby On Rails_Postgresql_Heroku_Http Status Code 404_Comfortable Mexican Sofa - Fatal编程技术网

Ruby on rails Rails 4 custom 404导致Heroku上的postgresql连接失败

Ruby on rails Rails 4 custom 404导致Heroku上的postgresql连接失败,ruby-on-rails,postgresql,heroku,http-status-code-404,comfortable-mexican-sofa,Ruby On Rails,Postgresql,Heroku,Http Status Code 404,Comfortable Mexican Sofa,我在Heroku上部署了一个Rails 4应用程序,并在生产中使用了一个自定义域。我也有一个登台版本。该应用程序使用舒适的墨西哥沙发 出现以下问题:应用程序将达到所有请求返回500错误的状态。日志显示: [jesse@Athens expat]$ heroku logs ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5.000 seconds (waited 5.000 se

我在Heroku上部署了一个Rails 4应用程序,并在生产中使用了一个自定义域。我也有一个登台版本。该应用程序使用舒适的墨西哥沙发

出现以下问题:应用程序将达到所有请求返回500错误的状态。日志显示:

[jesse@Athens expat]$ heroku logs
ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5.000 seconds (waited 5.000 seconds)):

[jesse@Athens expat]$ heroku pg:info
Connections: 5

[jesse@Athens expat]$ heroku pg:ps
 pid | state | source | running_for | waiting | query 
-----+-------+--------+-------------+---------+-------
(0 rows)

[jesse@Athens expat]$ heroku pg:killall
 pg_terminate_backend 
----------------------
 t
 t
 t
 t
 t
(5 rows)
随后尝试连接会导致500错误,db连接保持为0

在我使用此指南创建自定义错误页后出现此问题:

我可以通过创建一个404页面来强制解决这个问题,该页面使用数据库,然后向服务器发出大约5到6个请求,请求不存在的页面

编辑:

在使用静态自定义404页面时,我可以通过对不存在的带有jpeg扩展名的文件发出5或6个请求来强制解决这个问题。日志中将显示以下内容:

Error during failsafe response: Missing template errors/not_found, application/not_found with {:locale=>[:en], :formats=>[:jpeg], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :haml]}. Searched in:
2014-02-17T17:26:14.595469+00:00 app[web.1]:   * "/app/app/vi
ews"
2014-02-17T17:26:14.594508+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms

如果您能帮助解决此问题,我们将不胜感激。提前感谢

以下是功能控制器代码:

class ErrorsController < ApplicationController
  def not_found
    respond_to do |format|
      format.any(:htm, :html, :xls, :xlsx) { render :status => 404, :layout => "error_frame", :formats => [:html] }
      format.all { render nothing: true, status: 404 }
    end
  end

  def unacceptable
    respond_to do |format|
      format.html { render :status => 422, :layout => "error_frame" }
      format.all { render nothing: true, status: 422 }
    end
  end

  def internal_error
    respond_to do |format|
      format.html { render :layout => false, :status => 500 }
      format.all { render nothing: true, status: 500}
    end
  end
end
类错误控制器404,:layout=>“error\u frame”,:formats=>[:html]}
format.all{不呈现任何内容:true,状态:404}
结束
结束
def不可接受
回应待办事项|格式|
format.html{render:status=>422,:layout=>error\u frame}
format.all{不呈现任何内容:true,状态:422}
结束
结束
def内部错误
回应待办事项|格式|
format.html{render:layout=>false,:status=>500}
format.all{不呈现任何内容:true,状态:500}
结束
结束
结束

它试图用404作为jpeg图像的响应。所以它正在寻找not_found.jpg.erb模板。显然你没有。我不知道Heroku是如何做到这一点的,但你真的想防止它在提供静态内容(如图像、css、js等)时撞击Rails堆栈。啊,你可能想安装这个:谢谢。在respond_to block中处理不同的格式就成功了。您能将解决方案移动到一个答案,使其显示为已回答吗?