From 12440cec8a8406ab60c1ca8653e1763e7d7e6ab6 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Sat, 5 Jan 2013 00:26:49 +0000 Subject: [PATCH] Logging Spaminator movements --- plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb | 2 +- plugins/spaminator/lib/spaminator_plugin/scan_job.rb | 6 +++++- plugins/spaminator/lib/spaminator_plugin/spaminator.rb | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb b/plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb index f877978..dad88b5 100644 --- a/plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb +++ b/plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb @@ -34,7 +34,7 @@ class SpaminatorPluginAdminController < AdminController settings.scanning = true settings.save! remove_scheduled_scan - Delayed::Job.enqueue(SpaminatorPlugin::ScanJob.new(environment)) + Delayed::Job.enqueue(SpaminatorPlugin::ScanJob.new(environment.id)) end redirect_to :action => 'index' end diff --git a/plugins/spaminator/lib/spaminator_plugin/scan_job.rb b/plugins/spaminator/lib/spaminator_plugin/scan_job.rb index 3611a55..ea5e861 100644 --- a/plugins/spaminator/lib/spaminator_plugin/scan_job.rb +++ b/plugins/spaminator/lib/spaminator_plugin/scan_job.rb @@ -6,7 +6,11 @@ class SpaminatorPlugin::ScanJob < Struct.new(:environment_id) settings.scanning = true settings.save! - SpaminatorPlugin::Spaminator.run(environment) + begin + SpaminatorPlugin::Spaminator.run(environment) + rescue Exception => exception + SpaminatorPlugin::Spaminator.log("Spaminator failed with the following error: \n ==> #{exception}\n#{exception.backtrace.join("\n")}") + end settings.scanning = false SpaminatorPlugin.schedule_scan(environment) if settings.deployed diff --git a/plugins/spaminator/lib/spaminator_plugin/spaminator.rb b/plugins/spaminator/lib/spaminator_plugin/spaminator.rb index 2c29836..253324e 100644 --- a/plugins/spaminator/lib/spaminator_plugin/spaminator.rb +++ b/plugins/spaminator/lib/spaminator_plugin/spaminator.rb @@ -11,6 +11,14 @@ class SpaminatorPlugin::Spaminator def benchmark(environment) puts Benchmark.measure { run(environment) } end + + def initialize_logger(logpath) + @logger = Logger.new(logpath) + end + + def log(message) + @logger << "[#{Time.now.strftime("%F %T %z")}] #{message}\n" + end end @@ -20,9 +28,12 @@ class SpaminatorPlugin::Spaminator @report = SpaminatorPlugin::Report.new(:environment => environment, :total_people => Person.count, :total_comments => Comment.count) + logpath = File.join(SpaminatorPlugin.root_path, 'log', "#{environment.name.to_slug}_#{ENV['RAILS_ENV']}_#{Time.now.strftime("%F_%T")}.log") + self.class.initialize_logger(logpath) end def run + self.class.log("Starting Spaminator scan") start_time = Time.now process_all_comments @@ -37,6 +48,7 @@ class SpaminatorPlugin::Spaminator finish_report @settings.last_run = start_time @settings.save! + self.class.log("Finishing Spaminator scan successfully") end # TODO considering run everything always @@ -53,6 +65,7 @@ class SpaminatorPlugin::Spaminator end def process_all_comments + self.class.log("Starting to process all comments") comments = comments_to_process total = comments.count pbar = ProgressBar.new("☢ Comments", total) @@ -66,9 +79,11 @@ class SpaminatorPlugin::Spaminator end @report.processed_comments = total pbar.finish + self.class.log("All comments processed") end def process_all_people + self.class.log("Starting to process all people") people = people_to_process total = people.count pbar = ProgressBar.new("☢ People", total) @@ -79,9 +94,11 @@ class SpaminatorPlugin::Spaminator end @report.processed_people = total pbar.finish + self.class.log("All people processed") end def process_comment(comment) + self.class.log("Processing Comment[#{comment.id.to_s}]") comment = Comment.find(comment.id) comment.check_for_spam @report.spams_by_content += 1 if comment.spam @@ -97,6 +114,7 @@ class SpaminatorPlugin::Spaminator # person is author of more than 2 comments marked as spam # → mark as spammer # + self.class.log("Processing Person[#{person.id.to_s}] by comments") begin number_of_spam_comments = Comment.spam.where(:author_id => person.id).count if number_of_spam_comments > 2 @@ -115,6 +133,7 @@ class SpaminatorPlugin::Spaminator # → disable the profile # ? mark their comments as spam # + self.class.log("Processing Person[#{person.id.to_s}] by network") if person.created_at < (Time.now - 1.month) && person.friends.count == 0 && person.communities.count <= 1 @@ -151,6 +170,7 @@ class SpaminatorPlugin::Spaminator end def register_fail(kind, failed) + self.class.log("Failed #{kind.to_s.camelize}[#{failed.id.to_s}]") @report[:failed][kind.to_sym] << failed.id end end -- libgit2 0.21.2