From c17fa1187506647084eda7ed5fa07c2b056a85fb Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Thu, 3 Feb 2022 13:29:14 -0500 Subject: [PATCH] Bypassing validiation for data script (#16407) * Bypassing validiation for data script Prior to this commit, we attempted to run a script against all articles using validation. In the case of DEV, we have lots of articles that would no longer validate. This change now updates the column value without running validation. Relates to #16075 * Bump for travis --- ...ackfill_column_main_image_from_frontmatter.rb | 11 ----------- ...article_cached_attribute_around_main_image.rb | 16 ++++++++++++++++ ...e_cached_attribute_around_main_image_spec.rb} | 8 +++++--- 3 files changed, 21 insertions(+), 14 deletions(-) delete mode 100644 lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb create mode 100644 lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb rename spec/lib/data_update_scripts/{backfill_column_main_image_from_frontmatter_spec.rb => update_article_cached_attribute_around_main_image_spec.rb} (72%) diff --git a/lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb b/lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb deleted file mode 100644 index c91103a31..000000000 --- a/lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb +++ /dev/null @@ -1,11 +0,0 @@ -module DataUpdateScripts - class BackfillColumnMainImageFromFrontmatter - def run - Article.where(main_image_from_frontmatter: false).find_each do |article| - fixed_body_markdown = MarkdownProcessor::Fixer::FixAll.call(article.body_markdown || "") - parsed = FrontMatterParser::Parser.new(:md).call(fixed_body_markdown) - article.update!(main_image_from_frontmatter: true) if parsed.front_matter&.key?("cover_image") - end - end - end -end diff --git a/lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb b/lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb new file mode 100644 index 000000000..3d12940cb --- /dev/null +++ b/lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb @@ -0,0 +1,16 @@ +module DataUpdateScripts + class UpdateArticleCachedAttributeAroundMainImage + # @note This is a re-runniing of an earlier version of + # `lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb` + + # @see https://github.com/forem/forem/blob/9a11beec50f93dee1bbd58331028236205026084/lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb + # for original version. + def run + Article.where(main_image_from_frontmatter: false).find_each do |article| + fixed_body_markdown = MarkdownProcessor::Fixer::FixAll.call(article.body_markdown || "") + parsed = FrontMatterParser::Parser.new(:md).call(fixed_body_markdown) + article.update_column(:main_image_from_frontmatter, true) if parsed.front_matter&.key?("cover_image") + end + end + end +end diff --git a/spec/lib/data_update_scripts/backfill_column_main_image_from_frontmatter_spec.rb b/spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb similarity index 72% rename from spec/lib/data_update_scripts/backfill_column_main_image_from_frontmatter_spec.rb rename to spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb index 374e35412..6c7371312 100644 --- a/spec/lib/data_update_scripts/backfill_column_main_image_from_frontmatter_spec.rb +++ b/spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" require Rails.root.join( - "lib/data_update_scripts/20220120052641_backfill_column_main_image_from_frontmatter.rb", + "lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb", ) -describe DataUpdateScripts::BackfillColumnMainImageFromFrontmatter do +RSpec.describe DataUpdateScripts::UpdateArticleCachedAttributeAroundMainImage do let(:article_without_image) { create(:article, with_main_image: false) } let(:article_main_image) { create(:article, with_main_image: true) } let(:article_markdown_image) do @@ -14,11 +14,13 @@ describe DataUpdateScripts::BackfillColumnMainImageFromFrontmatter do before do article_without_image article_main_image - article_markdown_image + # Need to do the following for the script to even run. + article_markdown_image.update_column(:main_image_from_frontmatter, false) end it "set main_image_from_frontmatter to true only for articles with cover_image in body_markdown" do described_class.new.run + expect(article_without_image.reload.main_image_from_frontmatter).to be false expect(article_main_image.reload.main_image_from_frontmatter).to be false expect(article_markdown_image.reload.main_image_from_frontmatter).to be true