Create post:refresh_oneboxes rake task

This commit is contained in:
Chris Hunt 2013-06-19 00:20:30 -07:00
parent ef76e18215
commit 9565843d44
1 changed files with 32 additions and 16 deletions

View File

@ -1,25 +1,41 @@
desc "walk all posts updating cooked with latest markdown" desc 'Update each post with latest markdown'
task "posts:rebake" => :environment do task 'posts:rebake' => :environment do
rebake_posts
end
desc 'Update each post with latest markdown and refresh oneboxes'
task 'posts:refresh_oneboxes' => :environment do
rebake_posts invalidate_oneboxes: true
end
def rebake_posts(opts = {})
RailsMultisite::ConnectionManagement.each_connection do |db| RailsMultisite::ConnectionManagement.each_connection do |db|
puts "Re baking post markdown for #{db} , changes are denoted with # , no change with ." puts "Re baking post markdown for #{db} , changes are denoted with # , no change with ."
i = 0
Post.select([:id, :user_id, :cooked, :raw, :topic_id, :post_number]).each do |p| total = Post.select([
i += 1 :id, :user_id, :cooked, :raw, :topic_id, :post_number
cooked = p.cook(p.raw, topic_id: p.topic_id) ]).inject(0) do |total, post|
if cooked != p.cooked cooked = post.cook(
Post.exec_sql('update posts set cooked = ? where id = ?', cooked, p.id) post.raw,
p.cooked = cooked topic_id: post.topic_id,
invalidate_oneboxes: opts.fetch(:invalidate_oneboxes, false)
)
if cooked != post.cooked
Post.exec_sql(
'update posts set cooked = ? where id = ?', cooked, post.id
)
post.cooked = cooked
putc "#" putc "#"
else else
putc "." putc "."
end end
TopicLink.extract_from(p)
end
puts
puts
puts "#{i} posts done!"
puts "-----------------------------------------------"
puts
TopicLink.extract_from post
total += 1
end
puts "\n\n#{total} posts done!\n#{'-' * 50}\n"
end end
end end