У меня есть небольшое бесплатное приложение, работающее на герою.Текущая транзакция heroku отменена
с перерывами приложение перестает работать и отображает страницу ошибки героя по умолчанию на экране. когда я проверяю журналы я вижу следующее:
ActiveRecord::StatementInvalid (PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block : SELECT * FROM "users" WHERE ("users"."password" = E'' AND "users"."userid" = E'') LIMIT 1): app/models/user.rb:5:in
authenticate'
login'
app/controllers/admin_controller.rb:6:in
в мой контроллер, я просто делаю следующее:
user = User.authenticate(params[:storeid], params[:password])
и в модели пользователя:
def self.authenticate(userid, password)
user = self.find_by_userid_and_password(userid, password)
user
end
Сообщения об ошибках приводит меня полагать, что некоторые соединения остаются висящими и никогда не закрываются. Это когда-нибудь дело в рубиновом приложении?
В моем приложении также есть много мест, где я использую find_by_sql. это требует от нас прямого закрытия соединений?
Как это:
@sqlstmmt1 = "INSERT INTO addresses (\"line1\", \"line2\", city, state, zip, county) VALUES ('" + params[:line1] + "', '"+ params[:line2] + "', '"+params[:city]+ "', '" + params[:state] + "', '" + params[:zip]+ "', '" + params[:county]+"')"
sql = ActiveRecord::Base.connection();
sql.begin_db_transaction