X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Frbot%2Fplugins.rb;h=9a41610f6e4961b9fb6de8431e80b8674d8d6cfd;hb=16c921257d38522fd2930b1ee8d52675f0d4f1e0;hp=81449cceb13f614da1fe96083a00a2eadf9a8ef3;hpb=93cc91e6eaa4dbdaae59788a1cd37a8b46f6a435;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/plugins.rb b/lib/rbot/plugins.rb index 81449cce..9a41610f 100644 --- a/lib/rbot/plugins.rb +++ b/lib/rbot/plugins.rb @@ -573,6 +573,7 @@ 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+/) @@ -585,7 +586,24 @@ module Plugins msg = err.to_s.gsub(/^\(eval\)(:\d+)(:in `.*')?(:.*)?/) { |m| "#{fname}#{$1}#{$3}" } - newerr = err.class.new(msg) + begin + newerr = err.class.new(msg) + rescue ArgumentError => err_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 + # (instead, the smart thing to do would have been to make the second + # parameter optional and run the code in the from_message method if + # it was missing). + # Anyway, we try to cope with this in the simplest possible way. On + # the upside, this new block can be extended to handle other similar + # idiotic approaches + if err.class.respond_to? :from_message + newerr = err.class.from_message(msg) + else + raise err_in_err + end + end newerr.set_backtrace(bt) return newerr end @@ -924,7 +942,7 @@ 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?(BDB::Fatal) + raise if err.kind_of?(DBFatal) end } else @@ -940,7 +958,7 @@ 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?(BDB::Fatal) + raise if err.kind_of?(DBFatal) end end } @@ -970,7 +988,7 @@ 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?(BDB::Fatal) + raise if err.kind_of?(DBFatal) end debug "Successfully delegated #{m.inspect}" return true