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 deleted file mode 100644 index 3d12940cb..000000000 --- a/lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb +++ /dev/null @@ -1,16 +0,0 @@ -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/lib/data_update_scripts/20220203194510_update_article_flag_without_parsing_article.rb b/lib/data_update_scripts/20220203194510_update_article_flag_without_parsing_article.rb new file mode 100644 index 000000000..fe5998f87 --- /dev/null +++ b/lib/data_update_scripts/20220203194510_update_article_flag_without_parsing_article.rb @@ -0,0 +1,21 @@ +module DataUpdateScripts + class UpdateArticleFlagWithoutParsingArticle + def run + # Query cribbed from https://dev.to/admin/blazer/queries/545-articles-containing-a-given-string-in-the-markdown?substring=cover_image%3A+ + Article.where(main_image_from_frontmatter: false).find_each do |article| + has_cover_image = false + begin + fixed_body_markdown = MarkdownProcessor::Fixer::FixAll.call(article.body_markdown || "") + parsed = FrontMatterParser::Parser.new(:md).call(fixed_body_markdown) + has_cover_image = parsed.front_matter.key?("cover_image") + rescue StandardError + # Piping this to /dev/null, because we can't assume this article is processible in our + # current application state + ForemStatsClient.increment "dus.update_article_flag_without_parsing_article.errors" + end + + article.update_column(:main_image_from_frontmatter, true) if has_cover_image + end + end + end +end diff --git a/spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb b/spec/lib/data_update_scripts/update_article_flag_without_parsing_article_spec.rb similarity index 75% rename from spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb rename to spec/lib/data_update_scripts/update_article_flag_without_parsing_article_spec.rb index 6c7371312..bb71df20f 100644 --- a/spec/lib/data_update_scripts/update_article_cached_attribute_around_main_image_spec.rb +++ b/spec/lib/data_update_scripts/update_article_flag_without_parsing_article_spec.rb @@ -1,9 +1,9 @@ require "rails_helper" require Rails.root.join( - "lib/data_update_scripts/20220203165540_update_article_cached_attribute_around_main_image.rb", + "lib/data_update_scripts/20220203194510_update_article_flag_without_parsing_article.rb", ) -RSpec.describe DataUpdateScripts::UpdateArticleCachedAttributeAroundMainImage do +RSpec.describe DataUpdateScripts::UpdateArticleFlagWithoutParsingArticle 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 @@ -15,7 +15,7 @@ RSpec.describe DataUpdateScripts::UpdateArticleCachedAttributeAroundMainImage do article_without_image article_main_image # Need to do the following for the script to even run. - article_markdown_image.update_column(:main_image_from_frontmatter, false) + article_markdown_image.update_columns(main_image_from_frontmatter: false, main_image: "https://awesome.com/image.url") end it "set main_image_from_frontmatter to true only for articles with cover_image in body_markdown" do