lib/six-updater-web/lib/tasks/sync.rake in six-updater-web-0.13.6 vs lib/six-updater-web/lib/tasks/sync.rake in six-updater-web-0.14.1

- old
+ new

@@ -5,29 +5,77 @@ end task :gamespy => :environment do puts "Fetching server info..." geo = ENV['NOGEO'] ? "" : nil + #geo = "" puts "Pings and Countries: #{geo.nil?}" - puts + puts "" q = Six::Query::GamespyMaster.new(geo) h = q.process - puts + puts "" puts "Received #{h.size} servers" - puts + puts "" puts "Updating database..." + i, saved = 0, 0 + ids = [] + #hasj = Hash.new + timestart = Time.now h.each_pair do |key, e| - Queryserver.import(e) + i += 1 + time = Time.now + r = Queryserver.import(e) + next unless r + if r[0].changed? + #hasj[r[0].id] = r[1] + saved += 1 + r[0].save + else + ids << r[0].id + end + print "#{i} / #{h.keys.size}, took #{SixUpdaterWeb::stamp(time)}s\r" end + puts "Saved: #{saved}, Unchanged: #{h.keys.size - saved}. Took: #{SixUpdaterWeb::stamp(timestart)}s" +=begin + timestart = Time.now + puts "Updating #{hasj.keys.size} records..." + begin + Queryserver.update(hasj.keys, hasj.values) unless hasj.keys.empty? + rescue => e + puts "#{e.class}: #{e.message} #{e.backtrace.join("\n")}" + sleep 3 + ensure + puts "Took: #{SixUpdaterWeb::stamp(timestart)}s" + end +=end + + timestart = Time.now + puts "Tagging... #{ids.size} records" + begin + Queryserver.update_all("updated_at = '#{Time.now}'", ["id in (?)",ids]) unless ids.empty? + rescue => e + puts "#{e.class}: #{e.message} #{e.backtrace.join("\n")}" + ensure + puts "Took: #{SixUpdaterWeb::stamp(timestart)}s" + end + puts "Pruning database..." + timestart = Time.now Queryserver.prune + puts "Took: #{SixUpdaterWeb::stamp(timestart)}s" + puts "Cleaning database..." + timestart = Time.now Queryserver.clean + puts "Took: #{SixUpdaterWeb::stamp(timestart)}s" + puts "" + puts "Done!" + sleep 3 end task :system => :environment do Six::Dbmanager.reload_system end