Ruby on Rails:如何在应用程序配置中设置数据库超时?

时间:2010-08-17 19:32:32

标签: ruby-on-rails database postgresql timeout heroku

我想将我的数据库设置为在一段时间内未完成的超时请求,以防止异常请求独占整个应用程序。

为了设置这个,我可以添加到Rails配置文件中吗?

我尝试将我经常在timeout: 5000在线看到的一行添加到我的database.yml中,但这似乎没有任何效果。

我尝试在environment.rb中调用ActiveRecord::Base.connection.execute('set statement_timeout to 5000'),但这会导致Rails出错。

我在Heroku上运行Postgres数据库,我没有直接的数据库访问权限,因此我无法直接使用数据库配置。即使我从Heroku控制台远程执行该命令,他们也可以随时重启我的应用程序,如果在应用程序启动时没有重新执行,我的更改就会丢失。

3 个答案:

答案 0 :(得分:6)

database.yml中:

defaults: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  min_messages: warning
  variables:
    statement_timeout: 5000

答案 1 :(得分:4)

有了这个工作,只需要在最后一行中包含在environment.rb中的行,而不是在开头或块中。

答案 2 :(得分:1)

试试这个语法:

SET statement_timeout = 5000;