ruby-on-rails - Rails ActiveRecord checkout_timeou

我有以下初始化程序。

/config/initializers/database_connection.rb:

Rails.application.config.after_initialize do
  ActiveRecord::Base.connection_pool.disconnect!

  ActiveSupport.on_load(:active_record) do
    config = Rails.application.config.database_configuration[Rails.env]
    config['reaping_frequency'] = (ENV['DB_REAP_FREQ'] || 5).to_i # seconds
    config['pool']              = (ENV['DB_POOL'] || 15).to_i
    config['checkout_timeout']  = (ENV['DB_CHECKOUT_TIMEOUT'] || 25).to_i # seconds
    ActiveRecord::Base.establish_connection(config)
  end
end

我仍然收到以下错误:

ActiveRecord::ConnectionTimeoutError - could not obtain a database connection within 5.000 seconds (waited 6.940 seconds)

增加的超时(25 秒)将被忽略,并且超时在 5 秒后仍然发生。

我应该如何设置 checkout_timeout?

最佳答案

idk,如何通过配置对象设置 config.checkout_timeout,但是它应该可以在 database.yaml 中实现,并且这个文件也应该被 erb 解析,允许你在其中使用 ENV 变量,比如这个:

production:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  checkout_timeout: <%= ENV['TIMEOUT'] %>

我也不知道通过哈希访问设置配置属性。仅通过属性

 config.checkout_timeout  = 5

然而,这两者都是可能的,这并不会让我感到惊讶。 并且不要忘记在 (spring stop)

之前重启 rails 服务器并杀死 spring

关于ruby-on-rails - Rails ActiveRecord checkout_timeout 设置被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311711/

相关文章:

java - Web 服务连接被拒绝

android - 如何在 Android Studio 中为单元测试设置自定义可绘制目录

django - 在管理员中将动态字段添加到 Django 的 export_as_csv 操作

tfs - 使用 Team Build 2013 拒绝门控 checkin

python - 将颜色条添加到 python 子图中,其中数据点的颜色取决于未绘制的第三个变量

ruby-on-rails - Rails 更新三向连接表

java - twitter4j : Update filter of a running Stre

python - 如何在 scrapy 契约(Contract)中向请求添加属性

java - spring @RequestParam Unicode 不正确

java - 如何获得 PST 电子邮件地址和姓名?