diff --git a/src/db.cr b/src/db.cr index 499f799..75e8c13 100644 --- a/src/db.cr +++ b/src/db.cr @@ -102,12 +102,11 @@ 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 + db = build_database(uri) + begin + yield db + ensure + db.close end end diff --git a/src/db/query_methods.cr b/src/db/query_methods.cr index b404c4f..3047f30 100644 --- a/src/db/query_methods.cr +++ b/src/db/query_methods.cr @@ -31,13 +31,8 @@ module DB # The `ResultSet` is closed automatically. def query(query, *args) # CHECK prepare(query).query(*args, &block) - query(query, *args).tap do |rs| - begin - yield rs - ensure - rs.close - end - end + rs = query(query, *args) + yield rs ensure rs.close end # Performs the `query` and returns an `ExecResult` diff --git a/src/db/statement.cr b/src/db/statement.cr index 51272ad..94d7afa 100644 --- a/src/db/statement.cr +++ b/src/db/statement.cr @@ -69,19 +69,14 @@ module DB # See `QueryMethods#query` def query(*args) - query(*args).tap do |rs| - begin - yield rs - ensure - rs.close - end - end + rs = query(*args) + yield rs ensure rs.close end private def perform_exec_and_release(args : Enumerable) : ExecResult - perform_exec(args).tap do - release_connection - end + res = perform_exec(args) + release_connection + res end protected abstract def perform_query(args : Enumerable) : ResultSet