<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -6,6 +6,7 @@
 * Upgraded to RestClient 0.9.2 to remove a couple of bug workarounds
 * Changed the API to always shell out to the same version of Ruby it is running
   under
+* Made a first pass at Ruby 1.9 support
 
 == 3.0.1
 </diff>
      <filename>CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,8 @@
 #!/usr/bin/env ruby
+# encoding: UTF-8
 
-$VERBOSE = true # -w
-$KCODE   = &quot;u&quot;  # -Ku
+$VERBOSE = true                        # -w
+$KCODE   = &quot;u&quot; if RUBY_VERSION &lt; &quot;1.9&quot; # -Ku
 
 # load the agent
 $LOAD_PATH &lt;&lt; File.join(File.expand_path(File.dirname(__FILE__)), *%w[.. lib])</diff>
      <filename>bin/scout_agent</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 # require standard libraries
 require &quot;etc&quot;</diff>
      <filename>lib/scout_agent.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Agent</diff>
      <filename>lib/scout_agent/agent.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 # load agent extensions
 require &quot;scout_agent/api&quot;</diff>
      <filename>lib/scout_agent/agent/communication_agent.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 # load agent extensions
 require &quot;scout_agent/mission&quot;</diff>
      <filename>lib/scout_agent/agent/master_agent.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/configuration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/identify.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 # require standard libraries
 require &quot;io/wait&quot;</diff>
      <filename>lib/scout_agent/assignment/queue.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/reset.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/snapshot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment
@@ -47,9 +48,11 @@ module ScoutAgent
           Lifeline.new(agent, log)
         }
         %w[TERM INT].each do |signal|
-          trap(signal) do 
-            lifelines.each { |line| line.terminate }
-            Process.waitall
+          trap(signal) do
+            Thread.new do
+              lifelines.each { |line| line.terminate }
+              Process.waitall
+            end
           end
         end
         lifelines.each { |line| line.launch_and_monitor }</diff>
      <filename>lib/scout_agent/assignment/start.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/status.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Assignment</diff>
      <filename>lib/scout_agent/assignment/stop.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 # require standard libraries
 require &quot;tempfile&quot;</diff>
      <filename>lib/scout_agent/assignment/upload_log.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   # 
@@ -62,13 +63,26 @@ module ScoutAgent
       # reason.
       # 
       def require_lib_or_gem(name, version = nil)
+        # special case JSON, which became a standard library in Ruby 1.9
+        if name == &quot;json&quot; and RUBY_VERSION &gt;= &quot;1.9&quot;
+          no_warnings { return require(name) }
+        end
+        
         lock_gem_version(name, version) if version
-        require name
+        if %w[amalgalite rest_client].include?(name) and RUBY_VERSION &gt;= &quot;1.9&quot;
+          no_warnings { require name }
+        else
+          require name
+        end
       rescue LoadError    # library not found
         begin
           require &quot;rubygems&quot;
           lock_gem_version(name, version) if version
-          require name
+          if %w[amalgalite rest_client].include?(name) and RUBY_VERSION &gt;= &quot;1.9&quot;
+            no_warnings { require name }
+          else
+            require name
+          end
         rescue LoadError  # library not found
           v_str = version.to_s[/\d\.\d(?:\.\d)?/]
           v_str = &quot;-v #{v_str}&quot; if v_str
@@ -275,6 +289,7 @@ end
 
 # load all core extensions
 ScoutAgent::CoreExtensions.constants.each do |name|
+  name      = name.to_s  # needed for Ruby 1.9 compatibility
   extension = ScoutAgent::CoreExtensions.const_get(name)
   mixer     = name.sub!(/([a-z])(?:Module|Class)\z/, &quot;\\1&quot;) ? :extend : :include
   core      = Object.const_get(name)</diff>
      <filename>lib/scout_agent/core_extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   #
@@ -49,7 +50,7 @@ module ScoutAgent
     # 
     def initialize(log = WireTap.new(nil))
       @log          = log
-      @sqlite       = Amalgalite::Database.new(path)
+      @sqlite       = Amalgalite::Database.new(path.to_s)
       @read_locked  = false
       @write_locked = false
     end</diff>
      <filename>lib/scout_agent/database.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Database</diff>
      <filename>lib/scout_agent/database/mission_log.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Database</diff>
      <filename>lib/scout_agent/database/queue.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Database</diff>
      <filename>lib/scout_agent/database/snapshots.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Database</diff>
      <filename>lib/scout_agent/database/statuses.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   module Dispatcher
@@ -117,7 +118,8 @@ module ScoutAgent
     
     def load_assignment(assignment)
       dir     = LIB_DIR + &quot;assignment&quot;
-      matches = dir.entries.grep(/#{Regexp.escape(assignment)}\w*\.rb\z/)
+      matches = dir.entries.map { |path| path.to_s }.
+                            grep(/#{Regexp.escape(assignment)}\w*\.rb\z/)
       if matches.size &gt; 1
         abort_with_ambiguous_assignment(assignment, matches)
       elsif matches.first and (code = dir + matches.first).exist?</diff>
      <filename>lib/scout_agent/dispatcher.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   #</diff>
      <filename>lib/scout_agent/id_card.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Lifeline
@@ -228,7 +229,9 @@ module ScoutAgent
       close_writer
 
       if @code
-        @code.finish
+        Thread.new do
+          @code.finish
+        end
       else
         exit
       end
@@ -236,7 +239,9 @@ module ScoutAgent
     
     def alert_code
       if @code
-        @code.notice_changes
+        Thread.new do
+          @code.notice_changes
+        end
       end
     end
   end</diff>
      <filename>lib/scout_agent/lifeline.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Mission</diff>
      <filename>lib/scout_agent/mission.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Order</diff>
      <filename>lib/scout_agent/order.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Order</diff>
      <filename>lib/scout_agent/order/check_in_order.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   class Order</diff>
      <filename>lib/scout_agent/order/snapshot_order.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   #
@@ -211,7 +212,7 @@ module ScoutAgent
     # 
     %w[os_config_path os_db_path os_pid_path os_log_path].each do |path|
       define_method(path) do
-        prefix_path + super
+        prefix_path + super()
       end
     end
     
@@ -230,7 +231,7 @@ module ScoutAgent
     # 
     %w[db pid log].each do |path|
       define_method(&quot;#{path}_dir&quot;) do
-        send(&quot;os_#{path}_path&quot;) + (super || ScoutAgent.agent_name)
+        send(&quot;os_#{path}_path&quot;) + (super() || ScoutAgent.agent_name)
       end
     end
     </diff>
      <filename>lib/scout_agent/plan.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   # </diff>
      <filename>lib/scout_agent/server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   # </diff>
      <filename>lib/scout_agent/tracked.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby -wKU
+# encoding: UTF-8
 
 module ScoutAgent
   # 
@@ -479,6 +480,7 @@ module ScoutAgent
     # Builds a Hash of all levels used.
     def levels
       @levels ||= Hash[ *Severity.constants.
+                                  map { |name| name.to_s }.  # for Ruby 1.9
                                   map { |name| [name, level_by_name(name)] }.
                                   flatten ]
     end</diff>
      <filename>lib/scout_agent/wire_tap.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>046a7e1f9ed1164c23ec96033f144dc47c67bc4e</id>
    </parent>
  </parents>
  <author>
    <name>James Edward Gray II</name>
    <email>james@graysoftinc.com</email>
  </author>
  <url>http://github.com/highgroove/scout_agent/commit/6223681521e25934fbfdd214f0f5742004810e1e</url>
  <id>6223681521e25934fbfdd214f0f5742004810e1e</id>
  <committed-date>2009-04-06T13:46:28-07:00</committed-date>
  <authored-date>2009-04-06T13:46:28-07:00</authored-date>
  <message>A first pass at Ruby 1.9 support.</message>
  <tree>b8795c7faabe9231d8ee76e8412c0505394631b1</tree>
  <committer>
    <name>James Edward Gray II</name>
    <email>james@graysoftinc.com</email>
  </committer>
</commit>
