]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/registry.rb
Fix small typo in basics core botmodule
[user/henk/code/ruby/rbot.git] / lib / rbot / registry.rb
index bc52a3730dd17378eb6ce4ea36e0f96d7db65ab0..a3c55da83953e72c8eb5646f107aae22e61ab9b5 100644 (file)
@@ -27,14 +27,14 @@ module Irc
         }
         old.close
         new.close
-        File.delete("#{@bot.botclass}/registry.db")
+        File.rename("#{@bot.botclass}/registry.db", "#{@bot.botclass}/registry.db.old")
       end
     end
 
     def upgrade_data2
       if File.exist?("#{@bot.botclass}/plugin_registry.db")
         Dir.mkdir("#{@bot.botclass}/registry") unless File.exist?("#{@bot.botclass}/registry")
-        env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER)
+        env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER)# | BDB::TXN_NOSYNC)
         dbs = Hash.new
         log "upgrading previous (rbot 0.9.9 or earlier) plugin registry to new split format"
         old = BDB::CIBtree.open("#{@bot.botclass}/plugin_registry.db", nil,
@@ -44,6 +44,7 @@ module Irc
           prefix.downcase!
           # subregistries were split with a +, now they are in separate folders
           if prefix.gsub!(/\+/, "/")
+            # Ok, this code needs to be put in the db opening routines
             dirs = File.dirname("#{@bot.botclass}/registry/#{prefix}.db").split("/")
             dirs.length.times { |i|
               dir = dirs[0,i+1].join("/")+"/"
@@ -122,17 +123,27 @@ module Irc
     def initialize(bot, name)
       @bot = bot
       @name = name.downcase
+      dirs = File.dirname("#{@bot.botclass}/registry/#{@name}").split("/")
+      dirs.length.times { |i|
+        dir = dirs[0,i+1].join("/")+"/"
+        unless File.exist?(dir)
+          debug "creating subregistry directory #{dir}"
+          Dir.mkdir(dir) 
+        end
+      }
       @registry = DBTree.new bot, "registry/#{@name}"
       @default = nil
       # debug "initializing registry accessor with name #{@name}"
     end
 
     def flush
+      # debug "fushing registry #{@registry}"
       @registry.flush
       @registry.sync
     end
 
     def close
+      # debug "closing registry #{@registry}"
       @registry.close
     end
 
@@ -287,7 +298,7 @@ module Irc
     end
 
     def sub_registry(prefix)
-      return BotRegistryAccessor.new(@bot, @name + "/" + prefix)
+      return BotRegistryAccessor.new(@bot, @name + "/" + prefix.to_s)
     end
 
     # returns the number of keys in your registry namespace