]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
debug logging: don't raise on SecurityError
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 15 Apr 2008 13:01:37 +0000 (15:01 +0200)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Tue, 15 Apr 2008 16:16:44 +0000 (18:16 +0200)
Some scripts (from the scripts plugin) can trigger the logging functions
(debug, warning, info etc) in a $SAFE context: this causes the logger to
fail. Catch SecurityError in raw_log() to prevent these valid scripts from
failing.

lib/rbot/ircbot.rb

index 8767531dca84e6cfb8acb825fea67b4dccab0afd..cd073b327448f6a054889bea2869c051b8337f36 100644 (file)
@@ -39,26 +39,29 @@ class Exception
 end
 
 def rawlog(level, message=nil, who_pos=1)
-  call_stack = caller
-  if call_stack.length > who_pos
-    who = call_stack[who_pos].sub(%r{(?:.+)/([^/]+):(\d+)(:in .*)?}) { "#{$1}:#{$2}#{$3}" }
-  else
-    who = "(unknown)"
-  end
-  # Output each line. To distinguish between separate messages and multi-line
-  # messages originating at the same time, we blank #{who} after the first message
-  # is output.
-  # Also, we output strings as-is but for other objects we use pretty_inspect
-  case message
-  when String
-    str = message
-  else
-    str = message.pretty_inspect
+  begin
+    call_stack = caller
+    if call_stack.length > who_pos
+      who = call_stack[who_pos].sub(%r{(?:.+)/([^/]+):(\d+)(:in .*)?}) { "#{$1}:#{$2}#{$3}" }
+    else
+      who = "(unknown)"
+    end
+    # Output each line. To distinguish between separate messages and multi-line
+    # messages originating at the same time, we blank #{who} after the first message
+    # is output.
+    # Also, we output strings as-is but for other objects we use pretty_inspect
+    case message
+    when String
+      str = message
+    else
+      str = message.pretty_inspect
+    end
+    str.each_line { |l|
+      $logger.add(level, l.chomp, who)
+      who.gsub!(/./," ")
+    }
+  rescue SecurityError
   end
-  str.each_line { |l|
-    $logger.add(level, l.chomp, who)
-    who.gsub!(/./," ")
-  }
 end
 
 def log_session_start