<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -47,13 +47,17 @@ logger as an error message.
 
 === Callbacks
 
-RobustThread currently supports 4 global callbacks:
+RobustThread currently supports 5 callbacks. The following 4 are called per
+RobustThread.
 
   RobustThread.add_callback(:before_init){ puts &quot;Before init!&quot; }
   RobustThread.add_callback(:before_yield){ puts &quot;Before yield!&quot; }
   RobustThread.add_callback(:after_yield){ puts &quot;After yield!&quot; }
   RobustThread.add_callback(:after_join){ puts &quot;After join!&quot; }
 
+The +before_exit+ callback is called after all threads are re-joined.
+
+  RobustThread.add_callback(:before_exit){ puts &quot;Before exit!&quot; }
 
 === Etc...
 </diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,9 @@
 # Author:: Jared Kuolt (mailto:me@superjared.com)
 # Copyright:: Copyright (c) 2009 Jared Kuolt
 # License:: MIT License
+#
+# See README.rdoc[link:files/README_rdoc.html] for usage
+#
 require 'logger'
 require 'timeout'
 
@@ -35,7 +38,7 @@ class RobustThread
   ## Class methods and attributes
   class &lt;&lt; self
     attr_accessor :logger, :say_goodnight, :exit_handler_initialized, :callbacks
-    VALID_CALLBACKS = [:before_init, :before_yield, :after_yield, :after_join]
+    VALID_CALLBACKS = [:before_init, :before_yield, :after_yield, :after_join, :before_exit]
 
     # Logger object (see README)
     def logger
@@ -115,10 +118,11 @@ class RobustThread
         self.say_goodnight = true
         begin
           self.group.each do |rt|
-            log &quot;waiting on #{rt.label.inspect}&quot;
+            log &quot;waiting on #{rt.label.inspect}&quot; if rt.thread.alive?
             rt.thread.join
             rt.class.send :do_after_join
           end
+          self.send :do_before_exit
           log &quot;exited cleanly&quot;
         rescue Interrupt
           log &quot;prematurely killed by interrupt!&quot;, :error</diff>
      <filename>lib/robustthread.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,13 @@
 spec = Gem::Specification.new do |s|
   s.name = 'robustthread'
   s.rubyforge_project = 'robustthread'
-  s.version = '0.5'
+  s.version = '0.5.1'
   s.summary = 'Threads that stay alive'
   s.description = 'Trivial module that allows you to create threads that are not killed if the process exits cleanly'
   s.files = ['lib/robustthread.rb']
   s.require_path = 'lib'
   s.has_rdoc = true
+  s.extra_rdoc_files = ['README.rdoc']
   s.author = 'Jared Kuolt'
   s.email = 'me@superjared.com'
   s.homepage = 'http://github.com/JaredKuolt/robustthread/tree/master'</diff>
      <filename>robustthread.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4f6bdfc7c4d27e7d8e2771ad7493a625ea59301d</id>
    </parent>
  </parents>
  <author>
    <name>Jared Kuolt</name>
    <email>me@superjared.com</email>
  </author>
  <url>http://github.com/JaredKuolt/robustthread/commit/5cec815c310323e1468a1e8caeed51de65d31788</url>
  <id>5cec815c310323e1468a1e8caeed51de65d31788</id>
  <committed-date>2009-06-19T11:54:22-07:00</committed-date>
  <authored-date>2009-06-19T11:54:22-07:00</authored-date>
  <message>Add before_exit callback, v0.5.1</message>
  <tree>29d8e88c1d508371a8003343e594fc9c3397f6d5</tree>
  <committer>
    <name>Jared Kuolt</name>
    <email>me@superjared.com</email>
  </committer>
</commit>
