]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Fix TC db close on cleanup
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 11 Jul 2011 15:26:00 +0000 (17:26 +0200)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 11 Jul 2011 15:26:00 +0000 (17:26 +0200)
When closing the TC db on cleanup, we didn't remove it from the
environment. Override the #close() method to achieve that.

lib/rbot/registry/tc.rb

index 4477c1158b9ae03be7a7748c2f5ab79d7d142b8c..8ffd3e40f0a7e76dc8511c24d74b515813cc4695 100644 (file)
@@ -117,15 +117,19 @@ module Irc
       if absfilename && File.exist?(key)
         # db already exists, use it
         @db = DBTree.open_db(key)
+        @fname = key.dup
       elsif absfilename
         # create empty db
         @db = DBTree.create_db(key)
+        @fname = key.dup
       elsif File.exist? relfilename
         # db already exists, use it
         @db = DBTree.open_db relfilename
+        @fname = relfilename.dup
       else
         # create empty db
         @db = DBTree.create_db relfilename
+        @fname = relfilename.dup
       end
       oldbasename = (absfilename ? key : relfilename).gsub(/\.tdb$/, ".db")
       if File.exists? oldbasename and defined? BDB
@@ -155,6 +159,14 @@ module Irc
       @@bot_registries.clear
     end
 
+    def close
+      db = @@bot_registries.delete(@fname)
+      if db != @db
+        error "We think we have #{@db} from #{@fname}, TC pseudo-env gives us #{db}"
+      end
+      @db.close
+    end
+
     def DBTree.create_db(name)
       debug "DBTree: creating empty db #{name}"
       if @@bot_registries.key? name