<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,18 +1,18 @@
 require 'socket'
 
 module Craken
-  def self.determine_raketab_file
+  def self.determine_raketab_files
     if File.directory?(&quot;#{DEPLOY_PATH}/config/craken/&quot;) # Use hostname specific raketab first.
-      File.exists?(&quot;#{DEPLOY_PATH}/config/craken/#{HOSTNAME}_raketab&quot;) ?    
-      &quot;#{DEPLOY_PATH}/config/craken/#{HOSTNAME}_raketab&quot; : &quot;#{DEPLOY_PATH}/config/craken/raketab&quot;
+      raketabs = Dir[&quot;#{DEPLOY_PATH}/config/craken/*raketab*&quot;].partition {|f| f =~ %r[/raketab.*$] }
+      raketabs.last.empty? ? raketabs.first : raketabs.last.grep(/#{HOSTNAME}_raketab/)
     else
-      &quot;#{DEPLOY_PATH}/config/raketab&quot;
-    end    
+      Dir[&quot;#{DEPLOY_PATH}/config/raketab*&quot;]
+    end
   end
 
   HOSTNAME          = Socket.gethostname.split('.').first.downcase.strip
   DEPLOY_PATH       = ENV['deploy_path'] || RAILS_ROOT
-  RAKETAB_FILE      = ENV['raketab_file'] || determine_raketab_file
+  RAKETAB_FILES     = ENV['raketab_files'].split(&quot;:&quot;) rescue determine_raketab_files
   CRONTAB_EXE       = ENV['crontab_exe'] || &quot;/usr/bin/crontab&quot;
   RAKE_EXE          = ENV['rake_exe'] || (rake = `which rake`.strip and rake.empty?) ? &quot;/usr/bin/rake&quot; : rake
   RAKETAB_RAILS_ENV = ENV['raketab_rails_env'] || RAILS_ENV
@@ -61,4 +61,36 @@ module Craken
     `#{CRONTAB_EXE} #{filename}`
     FileUtils.rm filename
   end
+  
+  def raketab(files=RAKETAB_FILES)    
+    files.map do |file|
+      next unless File.exist?(file)
+      builder = file =~ /.(\w+)$/ ? &quot;build_raketab_from_#{$1}&quot; : &quot;build_raketab&quot;
+      send(builder.to_sym, file)
+    end.join(&quot;\n&quot;)
+  end
+  
+  private
+    def build_raketab_from_yml(file)
+      yml = YAML::load(ERB.new(File.read(file)).result(binding))
+      yml.map do |name,tab|
+        format = []
+        format &lt;&lt; (tab['min'] || tab['minute'] || '*')
+        format &lt;&lt; (tab['hour'] || '*')
+        format &lt;&lt; (tab['day'] || '*')
+        format &lt;&lt; (tab['month'] =~ /\d+/ ? tab['month'] : Date._parse(tab['month'].to_s)[:mon] || '*')
+        format &lt;&lt; ((day = tab['weekday'] || tab['wday'] and day =~ /^\d+/ ? day : Date._parse(day.to_s)[:wday]) || '*')
+        format &lt;&lt; tab['command']
+        format.join(' ')        
+      end.join(&quot;\n&quot;)
+    end
+    alias_method :build_raketab_from_yaml, :build_raketab_from_yml
+    
+    def build_raketab(file)
+      ERB.new(File.read(file)).result(binding)
+    end
+
+    def method_missing(method, *args)
+      method.to_s =~ /^build_raketab/ ? build_raketab(*args) : super
+    end
 end</diff>
      <filename>lib/craken.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,10 +6,9 @@ namespace :craken do
   task :install do
     require 'erb'
     include Craken
-    if File.exists? RAKETAB_FILE
-      puts &quot;craken:install =&gt; Using raketab file #{RAKETAB_FILE}&quot;
-      #raketab = File.read RAKETAB_FILE
-      raketab = ERB.new(File.read(RAKETAB_FILE)).result(binding)
+    unless RAKETAB_FILES.empty?
+      files = (plural = RAKETAB_FILES.size &gt; 1) ? RAKETAB_FILES.join(&quot;, &quot;) : RAKETAB_FILES.first
+      puts &quot;craken:install =&gt; Using raketab file#{plural ? 's' : ''} #{files}&quot; 
       crontab = append_tasks(load_and_strip, raketab)
       install crontab
     end</diff>
      <filename>tasks/craken.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ab0d13c58f17685a1e0731c8dd8d19e9a1d404c7</id>
    </parent>
  </parents>
  <author>
    <name>Reid MacDonald</name>
    <email>reid@laruby.com</email>
  </author>
  <url>http://github.com/latimes/craken/commit/f860c244259f2e9120886e2d40e9adbbf091a993</url>
  <id>f860c244259f2e9120886e2d40e9adbbf091a993</id>
  <committed-date>2008-11-07T17:23:16-08:00</committed-date>
  <authored-date>2008-11-07T17:23:16-08:00</authored-date>
  <message>added way to have multiple raketab builders and added one for YAML</message>
  <tree>f7ff99ec1b7ea7cfb8eceb245b45acf33d222c1e</tree>
  <committer>
    <name>Reid MacDonald</name>
    <email>reid@laruby.com</email>
  </committer>
</commit>
