diff --git a/app/models/jobs/base.rb b/app/models/jobs/base.rb index 717b0794e..bf576d523 100644 --- a/app/models/jobs/base.rb +++ b/app/models/jobs/base.rb @@ -5,5 +5,22 @@ module Jobs class Base Dir["#{Rails.root}/app/models/jobs/mail/*.rb"].each {|file| require file } + + #TODO these should be subclassed real exceptions + DUMB_ERROR_MESSAGES = [ + "Contact required unless request", + "Relayable object, but no parent object found" ] + + def self.suppress_annoying_errors(&block) + begin + yield + rescue Exception => e + if DUMB_ERROR_MESSAGES.include?(e.message) + Rails.logger.error(e.message) + else + raise e + end + end + end end -end +end \ No newline at end of file diff --git a/app/models/jobs/receive_encrypted_salmon.rb b/app/models/jobs/receive_encrypted_salmon.rb index eda7e2e53..6c964be8d 100644 --- a/app/models/jobs/receive_encrypted_salmon.rb +++ b/app/models/jobs/receive_encrypted_salmon.rb @@ -9,9 +9,11 @@ module Jobs @queue = :receive_salmon def self.perform(user_id, xml) - user = User.find(user_id) - zord = Postzord::Receiver::Private.new(user, :salmon_xml => xml) - zord.perform! + suppress_annoying_errors do + user = User.find(user_id) + zord = Postzord::Receiver::Private.new(user, :salmon_xml => xml) + zord.perform! + end end end end diff --git a/lib/tasks/resque.rake b/lib/tasks/resque.rake index 8b582cbfe..fe3e5a16b 100644 --- a/lib/tasks/resque.rake +++ b/lib/tasks/resque.rake @@ -7,3 +7,10 @@ end desc "Alias for resque:work (To run workers on Heroku)" task "jobs:work" => "resque:work" + +desc 'clear your failure queue in resque. good for crons.' +task 'resque:clear_failed' => [:environment]do + puts "clearing resque failures" + Resque::Failure.clear + puts "complete!" +end