diff --git a/app/models/post.rb b/app/models/post.rb index 832125e68..e5bed04dc 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -15,9 +15,8 @@ class Post < ActiveRecord::Base include Trashable include HasCustomFields - # rebake all posts baked before this date - # in our periodical job - REBAKE_BEFORE = Time.new(2014,5,27) + # increase this number to force a system wide post rebake + BAKED_VERSION = 1 rate_limit rate_limit :limit_posts_per_day @@ -315,7 +314,7 @@ class Post < ActiveRecord::Base end def self.rebake_old(limit) - Post.where('baked_at IS NULL OR baked_at < ?', REBAKE_BEFORE) + Post.where('baked_version IS NULL OR baked_version < ?', BAKED_VERSION) .limit(limit).each do |p| begin p.rebake! @@ -333,7 +332,7 @@ class Post < ActiveRecord::Base ) old_cooked = cooked - update_columns(cooked: new_cooked, baked_at: Time.new) + update_columns(cooked: new_cooked, baked_at: Time.new, baked_version: BAKED_VERSION) # Extracts urls from the body TopicLink.extract_from self @@ -391,6 +390,7 @@ class Post < ActiveRecord::Base self.last_editor_id ||= user_id self.cooked = cook(raw, topic_id: topic_id) unless new_record? self.baked_at = Time.new + self.baked_version = BAKED_VERSION end after_save do diff --git a/db/migrate/20140530043913_add_baked_version_to_post.rb b/db/migrate/20140530043913_add_baked_version_to_post.rb new file mode 100644 index 000000000..dd1cbd75d --- /dev/null +++ b/db/migrate/20140530043913_add_baked_version_to_post.rb @@ -0,0 +1,5 @@ +class AddBakedVersionToPost < ActiveRecord::Migration + def change + add_column :posts, :baked_version, :integer + end +end diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index 1ef88e0e3..182283298 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -834,11 +834,16 @@ describe Post do describe ".rebake_old" do it "will catch posts it needs to rebake" do post = create_post - post.update_column(:baked_at, Time.new(2000,1,1)) + post.update_columns(baked_at: Time.new(2000,1,1), baked_version: -1) Post.rebake_old(100) post.reload - post.baked_at.should > 1.day.ago + post.baked_at.should be > 1.day.ago + + baked = post.baked_at + Post.rebake_old(100) + post.reload + post.baked_at.should == baked end end