<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/rtwittbot/mixins/loggeable.rb</filename>
    </added>
    <added>
      <filename>lib/rtwittbot/overrides/kernel.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -45,7 +45,21 @@ module RTwittBot
         search_me = ::File.expand_path(
             ::File.join(::File.dirname(fname), dir, '**', '*.rb'))
 
-        Dir.glob(search_me).sort.each {|rb| require rb}
+        rbs           = Dir.glob(search_me).sort
+        previous_size = rbs.size
+        while rbs.size &gt; 0 do
+            loaded = rbs.select do |rb|
+                begin
+                    require rb
+                    true
+                rescue
+                    false
+                end
+            end
+            rbs = rbs - loaded
+            raise 'Unable to load libraries' if rbs.size == previous_size
+            previous_size = rbs.size
+        end
     end
 
 end  # module RTwittBot</diff>
      <filename>lib/rtwittbot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,8 @@ require 'xmpp4r/vcard'
 
 class JabberBot
     include Jabber
+    include Loggeable
+
     # user: like foobar@gmail.com
     # password: like foobarfoobar
     # server: like talk.google.com, it's optional, normally you take this value from the user
@@ -16,45 +18,58 @@ class JabberBot
         @bot.connect(server)
         @bot.auth(password)
         @bot.send(Presence.new.set_type(:available))
-        
+
         @buddy_list = Roster::Helper.new(@bot)
-        @buddy_list.add_subscription_request_callback do |item, pres| 
+        @buddy_list.add_subscription_request_callback do |item, pres|
             @buddy_list.accept_subscription(pres.from) if is_allowed? pres.from
         end
 
-        Thread.new { loop{ @bot.send(Presence::new); sleep 60 } }
+        # I think this is not neccesary
+        #Thread.new { loop{ @bot.send(Presence::new); sleep 60 } }
     end
 
     def screen_name(name)
-        vcard = Jabber::Vcard::IqVcard.new
+        vcard             = Jabber::Vcard::IqVcard.new
         vcard[&quot;FN&quot;]       = name
         vcard[&quot;NICKNAME&quot;] = name
-        begin
-          vcard_helper = Vcard::Helper.new(@bot).set(vcard)
-        rescue
-          puts &quot;#{Time.now} vcard operation failed&quot; 
-        end
+        Vcard::Helper.new(@bot).set(vcard)
+    rescue Exception =&gt; e
+        log_error e
     end
-    
+
     def set_status(state)
         @bot.send(Presence.new.set_status(state))
+    rescue Exception =&gt; e
+        log_error e
     end
 
     def add_allowed_user(user)
         unless is_allowed? user
             @bot.send(Presence.new.set_type(:subscribe).set_to(user))
         end
+    rescue Exception =&gt; e
+        log_error e
     end
 
     def each_message(&amp;block)
-        @bot.add_message_callback{|m| block[m.from, m.body] if is_allowed? m.from }
+        @bot.add_message_callback do |m|
+            begin
+                block[m.from, m.body] if is_allowed? m.from
+            rescue Exception =&gt; e
+                log_error e
+            end
+        end
     end
 
     def say_to(user, message)
-        @bot.send(Message.new(user, message).set_type(:chat).set_id('1')) if is_allowed? user 
+        @bot.send(Message.new(user, message).set_type(:chat).set_id('1')) if is_allowed? user
+    rescue Exception =&gt; e
+        log_error e
     end
 
+
     protected
+
     def is_allowed? user
         @buddy_list[user]
     end</diff>
      <filename>lib/rtwittbot/jabber_bot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,6 @@
 class TwitterJabberBot
+    include Loggeable
+
     def initialize(jabber_data, twitter_data, jabber_user)
         @bot     = JabberBot.new(jabber_data[:user], jabber_data[:password], jabber_data[:server])
         @twitter = TwitterHandle.new(twitter_data[:user], twitter_data[:password])
@@ -13,7 +15,11 @@ class TwitterJabberBot
              if message.match(/.+ \([^(]+\): .+/)
                  puts &quot;ERROR: trying to send a fetched twit? #{Time.now}, #{from} -- #{message}&quot; if $DEBUG
              else
-                 @twitter.twit message
+                 begin
+                     @twitter.twit message
+                 rescue
+                     @bot.say_to @user, &quot;ERROR, twitter down? Message has not been sent, i guess...&quot;
+                 end
              end
         end
         bot_default_status
@@ -30,6 +36,8 @@ class TwitterJabberBot
             rescue Exception =&gt; e
                 puts &quot; #{Time.now} Exception catched: #{e}&quot;
                 bot_error_status e
+            rescue
+                puts &quot;FATAL #{Time.now} Runtime Exception #{$!}&quot;
             end
             sleep SLEEP_TIME_IN_SEC
         end
@@ -45,11 +53,15 @@ class TwitterJabberBot
         @bot.set_status ''         
         @bot.screen_name BOT_NAME    
         @unavailable = false
+    rescue Exception =&gt;  e
+        log_error e
     end
 
     def bot_error_status(e)
         @bot.set_status &quot;#{e}&quot;
         @bot.screen_name(BOT_NAME + &quot; (ERROR)&quot;)
         @unavailable = true
+    rescue Exception =&gt; e
+        log_error e
     end
 end</diff>
      <filename>lib/rtwittbot/twitter_jabber_bot.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1e87280060078b77e2827fe302112cef4f363179</id>
    </parent>
  </parents>
  <author>
    <name>Jes&#250;s Garc&#237;a S&#225;ez</name>
    <email>blaxter@gmail.com</email>
  </author>
  <url>http://github.com/blaxter/rtwittbot/commit/256d702d8acfeb7ce79c3e81d0c9fab867f0a852</url>
  <id>256d702d8acfeb7ce79c3e81d0c9fab867f0a852</id>
  <committed-date>2008-09-30T09:19:32-07:00</committed-date>
  <authored-date>2008-09-30T09:19:32-07:00</authored-date>
  <message>Added exception log everywhere</message>
  <tree>0b33db5ff78ac36c3c158d3df409d11fc986c50f</tree>
  <committer>
    <name>Jes&#250;s Garc&#237;a S&#225;ez</name>
    <email>blaxter@gmail.com</email>
  </committer>
</commit>
