2013-02-06 03:16:51 +08:00
require 'image_sizer'
require_dependency 'cooked_post_processor'
module Jobs
class ProcessPost < Jobs :: Base
2013-02-26 00:42:20 +08:00
def execute ( args )
2014-05-06 21:41:59 +08:00
post = Post . find_by ( id : args [ :post_id ] )
2013-04-18 09:34:40 +08:00
# two levels of deletion
return unless post . present? && post . topic . present?
2013-02-06 03:16:51 +08:00
2014-12-07 13:39:15 +08:00
orig_cooked = post . cooked
recooked = nil
if args [ :cook ] . present?
2015-09-30 00:51:26 +08:00
cooking_options = args [ :cooking_options ] || { }
cooking_options [ :topic_id ] = post . topic_id
recooked = post . cook ( post . raw , cooking_options . symbolize_keys )
2014-12-07 13:39:15 +08:00
post . update_column ( :cooked , recooked )
end
2013-02-06 03:16:51 +08:00
cp = CookedPostProcessor . new ( post , args )
2013-11-22 08:52:26 +08:00
cp . post_process ( args [ :bypass_bump ] )
2013-02-06 03:16:51 +08:00
# If we changed the document, save it
2014-12-07 13:39:15 +08:00
cooked = cp . html
if cooked != ( recooked || orig_cooked )
if orig_cooked . present? && cooked . blank?
# TODO suicide if needed, let's gather a few here first
2014-12-07 13:43:26 +08:00
Rails . logger . warn ( " Cooked post processor in FATAL state, bypassing. You need to urgently restart sidekiq \n orig: #{ orig_cooked } \n recooked: #{ recooked } \n cooked: #{ cooked } \n post id: #{ post . id } " )
2014-12-07 13:39:15 +08:00
else
post . update_column ( :cooked , cp . html )
post . publish_change_to_clients! :revised
end
2014-08-27 08:58:43 +08:00
end
2013-02-06 03:16:51 +08:00
end
end
end