<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -404,7 +404,7 @@ class Merb::BootLoader::LoadClasses &lt; Merb::BootLoader
         end
         
         trap(&quot;HUP&quot;) do 
-          Merb.logger.warn! &quot;\nDoing a fast deploy\n&quot;
+          Merb.logger.warn! &quot;Doing a fast deploy\n&quot;
           Process.kill(&quot;HUP&quot;, pid)
         end
 
@@ -414,12 +414,19 @@ class Merb::BootLoader::LoadClasses &lt; Merb::BootLoader
             exit_status[1] == 128 ? break : exit
           end
           if select(reader_ary, nil, nil, 0.25)
-            msg = reader.readline
-            msg =~ /128/ ? break : exit
+            begin
+              msg = reader.readline
+              if msg =~ /128/
+                break
+              else
+                Process.waitall
+                exit
+              end
+            rescue SystemCallError
+              exit
+            end
           end
         end
-        
-        puts &quot;Broken out&quot;
       end
  
       reader.close
@@ -762,7 +769,7 @@ class Merb::BootLoader::ReloadClasses &lt; Merb::BootLoader
       Thread.new do
         loop do
           sleep( seconds )
-          block.call
+          yield
         end
         Thread.exit
       end
@@ -773,26 +780,33 @@ class Merb::BootLoader::ReloadClasses &lt; Merb::BootLoader
   def self.run
     return unless Merb::Config[:reload_classes]
 
-    TimedExecutor.every(Merb::Config[:reload_time] || 0.5) do
-      reload
-    end
-    
-  end
-
-  # Reloads all files.
-  def self.reload
     paths = []
     Merb.load_paths.each do |path_name, file_info|
       path, glob = file_info
       next unless glob
       paths &lt;&lt; Dir[path / glob]
     end
+  
+    if Merb.dir_for(:application) &amp;&amp; File.file?(Merb.dir_for(:application))
+      paths &lt;&lt; Merb.dir_for(:application)
+    end
 
-    paths &lt;&lt; Merb.dir_for(:application) if Merb.dir_for(:application) &amp;&amp; File.file?(Merb.dir_for(:application))
+    paths.flatten!
 
-    paths.flatten.each do |file|
-      next if Merb::BootLoader::LoadClasses::MTIMES[file] &amp;&amp; Merb::BootLoader::LoadClasses::MTIMES[file] == File.mtime(file)
-      Merb::BootLoader::LoadClasses.reload(file)
+    TimedExecutor.every(Merb::Config[:reload_time] || 0.5) do
+      GC.start
+      reload(paths)
+    end
+    
+  end
+
+  # Reloads all files.
+  def self.reload(paths)
+    paths.each do |file|
+      next if LoadClasses::MTIMES[file] &amp;&amp;  
+        LoadClasses::MTIMES[file] == File.mtime(file)
+          
+      LoadClasses.reload(file)
     end
   end
 end</diff>
      <filename>lib/merb-core/bootloader.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,6 @@ module Merb
         # ==== Returns.
         # Class:: The adapter class.
         def get(id)
-          p @adapters[id.to_s]
           Object.full_const_get(@adapters[id.to_s])
         end
 </diff>
      <filename>lib/merb-core/rack/adapter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -66,15 +66,19 @@ module Merb
       end
       
       def self.start_at_port(port, opts)
-        trap('INT') do
-          stop
-          puts &quot;\nExiting\n&quot;
-          exit
+        if Merb::Config[:daemonize]
+          trap('INT') do
+            stop
+            Merb.logger.warn! &quot;Exiting port #{port}\n&quot;
+            exit
+          end
+        else
+          trap('INT') { 1 }
         end
         
         trap('ABRT') do
           stop
-          puts &quot;\nExiting\n&quot;
+          Merb.logger.warn! &quot;Exiting port #{port}\n&quot;
           exit(128)
         end
         
@@ -86,7 +90,7 @@ module Merb
           begin
             @server = ::Mongrel::HttpServer.new(opts[:host], port)
           rescue Errno::EADDRINUSE
-            puts &quot;\nPort #{port} was still in use. Trying again.\n&quot;
+            puts &quot;Port #{port} was still in use. Trying again.\n&quot;
             sleep 0.25
             next
           end</diff>
      <filename>lib/merb-core/rack/adapter/mongrel.rb</filename>
    </modified>
    <modified>
      <diff>@@ -114,7 +114,7 @@ module Merb
         fork do
           Process.setsid
           exit if fork
-          puts &quot;In #{Process.pid}&quot;
+          Merb.logger.warn! &quot;In #{Process.pid}&quot; if Merb.logger
           File.umask 0000
           STDIN.reopen &quot;/dev/null&quot;
           STDOUT.reopen &quot;/dev/null&quot;, &quot;a&quot;</diff>
      <filename>lib/merb-core/server.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>76eba224d0beed7a32a2e20826f0f0574a4e20c9</id>
    </parent>
  </parents>
  <author>
    <name>Yehuda Katz</name>
    <email>wycats@gmail.com</email>
  </author>
  <url>http://github.com/wycats/merb-core/commit/717d5a8667a1fc206061c007e00528643676fb5e</url>
  <id>717d5a8667a1fc206061c007e00528643676fb5e</id>
  <committed-date>2008-09-27T18:27:09-07:00</committed-date>
  <authored-date>2008-09-24T00:05:26-07:00</authored-date>
  <message>Tighten things up so that ctrl-c works correctly</message>
  <tree>7b2bd7b3e60bc063c738010b1c29a7382fee039b</tree>
  <committer>
    <name>Yehuda Katz</name>
    <email>wycats@gmail.com</email>
  </committer>
</commit>
