ruby on rails - ActiveRecord:: ConnectionNotEstablished-No hay grupo de conexiones para X
ruby-on-rails postgresql (1)
No puedo hacer que mi aplicación sinatra / ruby alojada en heroku funcione como se desea. Jugué con alguna configuración tratando de resolver este problema, pero hasta ahora no hay resultados.
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''
El usuario es una de mis tablas de ActiveRecords y la aplicación falla porque intento consultarla.
Yo uso sinatra con respaldo puma. Aquí está mi Procfile:
web: ruby app/my-server.rb -s puma
También estaba comprobando cuántas conexiones abiertas hay usando:
select count(*) from pg_stat_activity where pid <> pg_backend_pid() and usename = current_user;
pero su dice 0 cada vez.
Estoy alojando la aplicación en el plan gratuito y el plan de desarrollo de herokupostgres.
También noté que el problema ocurre cuando hay 2 llamadas rápidas a api en un corto intervalo de tiempo. Como solo había 1, no 5 conexiones disponibles, porque la primera llamada tuvo éxito y la segunda falla. En mi database.yml configuré el grupo a 5.
Estoy en Rails 4.2.1 y Postgres 9.4
Aquí está mi database.yml también:
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 >
¿Echo de menos alguna configuración o el plan Heroku libre se ahoga en eso?
Por favor verifica como tu aplicación sinatra estableció la conexión.
configure :production, :development do
db = URI.parse(ENV[''DATABASE_URL''] || ''postgres://localhost/mydb'')
pool = ENV["DB_POOL"] || ENV[''MAX_THREADS''] || 5
ActiveRecord::Base.establish_connection(
adapter: db.scheme == ''postgres'' ? ''postgresql'' : db.scheme,
host: db.host,
username: db.user,
password: db.password,
database: db.path[1..-1],
encoding: ''utf8'',
pool: pool
)
end
Asegúrese de tener la configuración adecuada para el grupo, y también asegúrese de tener una configuración de DB_POOL
para DB_POOL
o MAX_THREADS
.
heroku config:set DB_POOL=5
o
heroku config:set MAX_THREADS=5