我正在使用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
答案 0 :(得分:2)
应该没问题,从source code使用ensure
块,最后释放连接。
def with_connection
...
ensure
release_connection(connection_id) if fresh_connection
end