Commit 12440cec8a8406ab60c1ca8653e1763e7d7e6ab6
1 parent
593da77e
Exists in
master
and in
28 other branches
Logging Spaminator movements
Showing
3 changed files
with
26 additions
and
2 deletions
Show diff stats
plugins/spaminator/controllers/spaminator_plugin_admin_controller.rb
| ... | ... | @@ -34,7 +34,7 @@ class SpaminatorPluginAdminController < AdminController |
| 34 | 34 | settings.scanning = true |
| 35 | 35 | settings.save! |
| 36 | 36 | remove_scheduled_scan |
| 37 | - Delayed::Job.enqueue(SpaminatorPlugin::ScanJob.new(environment)) | |
| 37 | + Delayed::Job.enqueue(SpaminatorPlugin::ScanJob.new(environment.id)) | |
| 38 | 38 | end |
| 39 | 39 | redirect_to :action => 'index' |
| 40 | 40 | end | ... | ... |
plugins/spaminator/lib/spaminator_plugin/scan_job.rb
| ... | ... | @@ -6,7 +6,11 @@ class SpaminatorPlugin::ScanJob < Struct.new(:environment_id) |
| 6 | 6 | settings.scanning = true |
| 7 | 7 | settings.save! |
| 8 | 8 | |
| 9 | - SpaminatorPlugin::Spaminator.run(environment) | |
| 9 | + begin | |
| 10 | + SpaminatorPlugin::Spaminator.run(environment) | |
| 11 | + rescue Exception => exception | |
| 12 | + SpaminatorPlugin::Spaminator.log("Spaminator failed with the following error: \n ==> #{exception}\n#{exception.backtrace.join("\n")}") | |
| 13 | + end | |
| 10 | 14 | |
| 11 | 15 | settings.scanning = false |
| 12 | 16 | SpaminatorPlugin.schedule_scan(environment) if settings.deployed | ... | ... |
plugins/spaminator/lib/spaminator_plugin/spaminator.rb
| ... | ... | @@ -11,6 +11,14 @@ class SpaminatorPlugin::Spaminator |
| 11 | 11 | def benchmark(environment) |
| 12 | 12 | puts Benchmark.measure { run(environment) } |
| 13 | 13 | end |
| 14 | + | |
| 15 | + def initialize_logger(logpath) | |
| 16 | + @logger = Logger.new(logpath) | |
| 17 | + end | |
| 18 | + | |
| 19 | + def log(message) | |
| 20 | + @logger << "[#{Time.now.strftime("%F %T %z")}] #{message}\n" | |
| 21 | + end | |
| 14 | 22 | end |
| 15 | 23 | |
| 16 | 24 | |
| ... | ... | @@ -20,9 +28,12 @@ class SpaminatorPlugin::Spaminator |
| 20 | 28 | @report = SpaminatorPlugin::Report.new(:environment => environment, |
| 21 | 29 | :total_people => Person.count, |
| 22 | 30 | :total_comments => Comment.count) |
| 31 | + logpath = File.join(SpaminatorPlugin.root_path, 'log', "#{environment.name.to_slug}_#{ENV['RAILS_ENV']}_#{Time.now.strftime("%F_%T")}.log") | |
| 32 | + self.class.initialize_logger(logpath) | |
| 23 | 33 | end |
| 24 | 34 | |
| 25 | 35 | def run |
| 36 | + self.class.log("Starting Spaminator scan") | |
| 26 | 37 | start_time = Time.now |
| 27 | 38 | |
| 28 | 39 | process_all_comments |
| ... | ... | @@ -37,6 +48,7 @@ class SpaminatorPlugin::Spaminator |
| 37 | 48 | finish_report |
| 38 | 49 | @settings.last_run = start_time |
| 39 | 50 | @settings.save! |
| 51 | + self.class.log("Finishing Spaminator scan successfully") | |
| 40 | 52 | end |
| 41 | 53 | |
| 42 | 54 | # TODO considering run everything always |
| ... | ... | @@ -53,6 +65,7 @@ class SpaminatorPlugin::Spaminator |
| 53 | 65 | end |
| 54 | 66 | |
| 55 | 67 | def process_all_comments |
| 68 | + self.class.log("Starting to process all comments") | |
| 56 | 69 | comments = comments_to_process |
| 57 | 70 | total = comments.count |
| 58 | 71 | pbar = ProgressBar.new("☢ Comments", total) |
| ... | ... | @@ -66,9 +79,11 @@ class SpaminatorPlugin::Spaminator |
| 66 | 79 | end |
| 67 | 80 | @report.processed_comments = total |
| 68 | 81 | pbar.finish |
| 82 | + self.class.log("All comments processed") | |
| 69 | 83 | end |
| 70 | 84 | |
| 71 | 85 | def process_all_people |
| 86 | + self.class.log("Starting to process all people") | |
| 72 | 87 | people = people_to_process |
| 73 | 88 | total = people.count |
| 74 | 89 | pbar = ProgressBar.new("☢ People", total) |
| ... | ... | @@ -79,9 +94,11 @@ class SpaminatorPlugin::Spaminator |
| 79 | 94 | end |
| 80 | 95 | @report.processed_people = total |
| 81 | 96 | pbar.finish |
| 97 | + self.class.log("All people processed") | |
| 82 | 98 | end |
| 83 | 99 | |
| 84 | 100 | def process_comment(comment) |
| 101 | + self.class.log("Processing Comment[#{comment.id.to_s}]") | |
| 85 | 102 | comment = Comment.find(comment.id) |
| 86 | 103 | comment.check_for_spam |
| 87 | 104 | @report.spams_by_content += 1 if comment.spam |
| ... | ... | @@ -97,6 +114,7 @@ class SpaminatorPlugin::Spaminator |
| 97 | 114 | # person is author of more than 2 comments marked as spam |
| 98 | 115 | # → mark as spammer |
| 99 | 116 | # |
| 117 | + self.class.log("Processing Person[#{person.id.to_s}] by comments") | |
| 100 | 118 | begin |
| 101 | 119 | number_of_spam_comments = Comment.spam.where(:author_id => person.id).count |
| 102 | 120 | if number_of_spam_comments > 2 |
| ... | ... | @@ -115,6 +133,7 @@ class SpaminatorPlugin::Spaminator |
| 115 | 133 | # → disable the profile |
| 116 | 134 | # ? mark their comments as spam |
| 117 | 135 | # |
| 136 | + self.class.log("Processing Person[#{person.id.to_s}] by network") | |
| 118 | 137 | if person.created_at < (Time.now - 1.month) && |
| 119 | 138 | person.friends.count == 0 && |
| 120 | 139 | person.communities.count <= 1 |
| ... | ... | @@ -151,6 +170,7 @@ class SpaminatorPlugin::Spaminator |
| 151 | 170 | end |
| 152 | 171 | |
| 153 | 172 | def register_fail(kind, failed) |
| 173 | + self.class.log("Failed #{kind.to_s.camelize}[#{failed.id.to_s}]") | |
| 154 | 174 | @report[:failed][kind.to_sym] << failed.id |
| 155 | 175 | end |
| 156 | 176 | end | ... | ... |