我无法使我的sinatra/ruby应用在heroku上按照预期工作。我尝试了一些设置来解决这个问题,但目前还没有结果。
ActiveRecord::ConnectionNotEstablished - No connection pool for User:
2015-06-25T14:26:11.736854+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:566:in `retrieve_connection'
2015-06-25T14:26:11.736856+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
2015-06-25T14:26:11.736858+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.1/lib/active_record/connection_handling.rb:87:in `connection'
用户是我的ActiveRecords表之一,应用程序失败是因为我尝试查询它。
我使用的是带有Puma备份的Sinatra。以下是我的Procfile:
web: ruby app/my-server.rb -s puma
我还检查了使用以下方法有多少个打开的连接:
select count(*) from pg_stat_activity where pid <> pg_backend_pid() and usename = current_user;
但它每次都显示为0。
我正在使用Heroku Postgres的免费计划和开发计划托管应用程序。
我还注意到当在短时间内进行两个快速的API调用时,问题就会出现。就像只有1个连接可用,而不是5个,因为第一个调用成功了,而第二个调用失败了。在我的database.yml中,我将池设置为5。
我使用Rails 4.2.1和Postgres 9.4。
这是我的database.yml文件:
default: &default
adapter: postgresql
encoding: utf8
pool: 5
timeout: 5000
production:
<<: *default
host: my_db_address
port: 5432
database: my_db_name
username: my_db_user_name
password: my_db_password
< test and development ommited >
我是不是错过了某些配置,还是免费的Heroku计划对此无能为力?