# Entry point class ReportRunner Reports = [SubmitTerminationReport] class << self def run(*servers) Reports.each do |report| open(report.combined_log, 'w') do |out| out.puts report.header servers.each do |server| report.publish(server, out) end end end end end def run_all run Server.new("10.0.0.1"), Server.new("10.0.0.2") end end end if __FILE__ == $0 if ARGV.empty? ReportRunner.run_all else ReportRunner.run *ARGV.collect {|ip| Server.new(ip)} end end