ensure db is closed after block

avoid GC Warning
This commit is contained in:
Brian J. Cardiff 2016-02-19 12:39:09 -03:00
parent ee21fcfea6
commit 2cb37d374c
2 changed files with 7 additions and 2 deletions

View file

@ -22,6 +22,8 @@ module DB
# Closes all connection to the database. # Closes all connection to the database.
def close def close
@connection.try &.close @connection.try &.close
# prevent GC Warning: Finalization cycle involving discovered by mysql implementation
@connection = nil
end end
# :nodoc: # :nodoc:

View file

@ -101,8 +101,11 @@ module DB
# Same as `#open` but the database is yielded and closed automatically. # Same as `#open` but the database is yielded and closed automatically.
def self.open(uri : URI | String, &block) def self.open(uri : URI | String, &block)
build_database(uri).tap do |db| build_database(uri).tap do |db|
yield db begin
db.close yield db
ensure
db.close
end
end end
end end