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.
def close
@connection.try &.close
# prevent GC Warning: Finalization cycle involving discovered by mysql implementation
@connection = nil
end
# :nodoc:

View file

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