discourse/lib/tasks/posts.rake

42 lines
1.0 KiB
Ruby
Raw Normal View History

2013-06-19 15:20:30 +08:00
desc 'Update each post with latest markdown'
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 = {})
2013-02-06 03:16:51 +08:00
RailsMultisite::ConnectionManagement.each_connection do |db|
puts "Re baking post markdown for #{db} , changes are denoted with # , no change with ."
2013-06-19 15:20:30 +08:00
total = Post.select([
:id, :user_id, :cooked, :raw, :topic_id, :post_number
]).inject(0) do |total, post|
cooked = post.cook(
post.raw,
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
2013-02-06 03:16:51 +08:00
putc "#"
else
putc "."
end
2013-06-19 15:20:30 +08:00
TopicLink.extract_from post
total += 1
2013-02-06 03:16:51 +08:00
end
2013-06-19 15:20:30 +08:00
puts "\n\n#{total} posts done!\n#{'-' * 50}\n"
2013-02-06 03:16:51 +08:00
end
end