3

我正在使用 ConnectionPool 签出/签入数据库连接。

因此,如果没有例外,一切都会按预期进行。最后签入连接。

但是,如果在 with_connection 周围的代码块中有异常怎么办?

AR 连接是否仍会自动签入到池中?

ActiveRecord::Base.connection_pool.with_connection do
   m = SomeModel.find(something)
   m.foo = "bar"
   m.save!
   etc

   #EXCEPTION RAISED HERE
   # WHAT HAPPENS?

end
4

1 回答 1

2

应该没问题,从源代码中使用了一个ensure块,它在最后释放连接。

def with_connection
  ...
ensure
  release_connection(connection_id) if fresh_connection
end
于 2013-05-24T04:41:38.267 回答