# File cron/lib/symbiosis/crontab.rb, line 144
    def run
      old_env = {}
      @environment.each do |k,v|
        next unless %w(MAILTO PATH).include?(k)
        old_env[k] = (ENV[k].nil? ? nil : ENV[k])
        ENV[k] = v
      end
      output = [] 

      @records.select{|record| record.ready?}.each do |record|
        this_output = record.run
        if this_output.length > 0
          output << record.command+":\n"
          output += this_output
          output << "\n"
        end
      end

      # restore environment
      old_env.each do |k,v|
        if v.nil?
          ENV.delete(k) 
        else
          ENV[k] = v
        end
      end

      return if output.empty?

      if @environment['MAILTO'] and !@environment['MAILTO'].to_s.empty?
        cron_env = @environment.merge(ENV){|k,o,n| o}
        mail = []
        mail << "To: #{@environment['MAILTO']}"
        mail << "Subject: Cron output for #{@filename}"
        %w(SHELL PATH HOME LOGNAME).each do |k|
          mail << "X-Cron-Env: <#{k}=#{cron_env[k]}>" if ENV.has_key?(k)
        end
        mail << "Date: #{DateTime.now.to_time.rfc2822}"
        mail << ""
        mail << output.join
        if @mail_output
          IO.popen(@mail_command,"w+") do |pipe|
            pipe.write mail.join("\n")
            pipe.close
          end 
        else
          puts mail.join("\n")
        end
      else
        puts output
      end
    end