]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/plugins.rb
updated copyright notice and authors
[user/henk/code/ruby/rbot.git] / lib / rbot / plugins.rb
index 9a41610f6e4961b9fb6de8431e80b8674d8d6cfd..c499fd40ccef26c21ea2e24c4a966541b2c24dcf 100644 (file)
@@ -187,7 +187,7 @@ module Plugins
       @botmodule_triggers = Array.new
 
       @handler = MessageMapper.new(self)
-      @registry = Registry::Accessor.new(@bot, self.class.to_s.gsub(/^.*::/, ""))
+      @registry = @bot.registry_factory.create(@bot.path, self.class.to_s.gsub(/^.*::/, ''))
 
       @manager.add_botmodule(self)
       if self.respond_to?('set_language')
@@ -573,7 +573,6 @@ module Plugins
         return :loaded
       rescue Exception => err
         # rescue TimeoutError, StandardError, NameError, LoadError, SyntaxError => err
-        raise if err.kind_of? DBFatal
         error report_error("#{desc}#{fname} load failed", err)
         bt = err.backtrace.select { |line|
           line.match(/^(\(eval\)|#{fname}):\d+/)
@@ -588,7 +587,7 @@ module Plugins
         }
         begin
           newerr = err.class.new(msg)
-        rescue ArgumentError => err_in_err
+        rescue ArgumentError => aerr_in_err
           # Somebody should hang the ActiveSupport developers by their balls
           # with barbed wire. Their MissingSourceFile extension to LoadError
           # _expects_ a second argument, breaking the usual Exception interface
@@ -601,7 +600,15 @@ module Plugins
           if err.class.respond_to? :from_message
             newerr = err.class.from_message(msg)
           else
-            raise err_in_err
+            raise aerr_in_err
+          end
+        rescue NoMethodError => nmerr_in_err
+          # Another braindead extension to StandardError, OAuth2::Error,
+          # doesn't get a string as message, but a response
+          if err.respond_to? :response
+            newerr = err.class.new(err.response)
+          else
+            raise nmerr_in_err
           end
         end
         newerr.set_backtrace(bt)
@@ -678,7 +685,13 @@ module Plugins
             end
           end
 
-          did_it = load_botmodule_file("#{dir}/#{file}", "plugin")
+          begin
+            did_it = load_botmodule_file("#{dir}/#{file}", "plugin")
+          rescue Exception => e
+            error e
+            did_it = e
+          end
+
           case did_it
           when Symbol
             processed[file.intern] = did_it
@@ -942,7 +955,6 @@ module Plugins
           rescue Exception => err
             raise if err.kind_of?(SystemExit)
             error report_error("#{p.botmodule_class} #{p.name} #{method}() failed:", err)
-            raise if err.kind_of?(DBFatal)
           end
         }
       else
@@ -958,7 +970,6 @@ module Plugins
             rescue Exception => err
               raise if err.kind_of?(SystemExit)
               error report_error("#{p.botmodule_class} #{p.name} #{method}() failed:", err)
-              raise if err.kind_of?(DBFatal)
             end
           end
         }
@@ -988,7 +999,6 @@ module Plugins
             rescue Exception => err
               raise if err.kind_of?(SystemExit)
               error report_error("#{p.botmodule_class} #{p.name} privmsg() failed:", err)
-              raise if err.kind_of?(DBFatal)
             end
             debug "Successfully delegated #{m.inspect}"
             return true