Method: SQLite3::ForkSafety.discard

Defined in:
lib/sqlite3/fork_safety.rb

.discardObject

:nodoc:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sqlite3/fork_safety.rb', line 33

def discard # :nodoc:
  warned = @suppress
  @databases.each do |db|
    next unless db.weakref_alive?

    begin
      unless db.closed? || db.readonly?
        unless warned
          # If you are here, you may want to read
          # https://github.com/sparklemotion/sqlite3-ruby/pull/558
          warn("Writable sqlite database connection(s) were inherited from a forked process. " \
               "This is unsafe and the connections are being closed to prevent possible data " \
               "corruption. Please close writable sqlite database connections before forking.",
            uplevel: 0)
          warned = true
        end
        db.close
      end
    rescue WeakRef::RefError
      # GC may run while this method is executing, and that's OK
    end
  end
  @databases.clear
end