From aa9ae0e2dcabbff627bc75b142861bc5b2ec27b0 Mon Sep 17 00:00:00 2001 From: Sylhare Date: Sun, 5 Jun 2022 16:10:54 -0400 Subject: [PATCH] Allow disabling of jekyll-feed while in development (#370) Merge pull request 370 --- .rubocop.yml | 4 ++++ README.md | 10 ++++++++++ lib/jekyll-feed/generator.rb | 8 ++++++++ spec/jekyll-feed_spec.rb | 28 ++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index c8639713..80a91934 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -16,6 +16,10 @@ Layout/LineEndStringConcatenationIndentation: Lint/EmptyInPattern: Enabled: false + +Metrics/AbcSize: + IgnoredMethods: + - generate # in generator.rb Naming/InclusiveLanguage: Enabled: false diff --git a/README.md b/README.md index 62694793..342177bf 100644 --- a/README.md +++ b/README.md @@ -246,6 +246,16 @@ feed: Note that if you include a tag that is excluded a feed will not be generated for it. +## Skip development + +Use `disable_in_development: true` if you want to turn off feed generation when `jekyll.environment == "development"`, +but don't want to remove the plugin (so you don't accidentally commit the removal). Default value is `false`. + +```yml +feed: + disable_in_development: true +``` + ## Contributing 1. Fork it (https://github.com/jekyll/jekyll-feed/fork) diff --git a/lib/jekyll-feed/generator.rb b/lib/jekyll-feed/generator.rb index 3f285bef..7a959199 100644 --- a/lib/jekyll-feed/generator.rb +++ b/lib/jekyll-feed/generator.rb @@ -8,6 +8,10 @@ class Generator < Jekyll::Generator # Main plugin action, called by Jekyll-core def generate(site) @site = site + if disabled_in_development? + Jekyll.logger.info "Jekyll Feed:", "Skipping feed generation in development" + return + end collections.each do |name, meta| Jekyll.logger.info "Jekyll Feed:", "Generating feed for #{name}" (meta["categories"] + [nil]).each do |category| @@ -137,5 +141,9 @@ def normalize_posts_meta(hash) config["path"] ||= hash["posts"]["path"] hash end + + def disabled_in_development? + config && config["disable_in_development"] && Jekyll.env == "development" + end end end diff --git a/spec/jekyll-feed_spec.rb b/spec/jekyll-feed_spec.rb index f739a2e2..41514d1f 100644 --- a/spec/jekyll-feed_spec.rb +++ b/spec/jekyll-feed_spec.rb @@ -25,7 +25,9 @@ let(:contents) { File.read(dest_dir("feed.xml")) } let(:context) { make_context(:site => site) } let(:feed_meta) { Liquid::Template.parse("{% feed_meta %}").render!(context, {}) } + let(:jekyll_env) { "development" } before(:each) do + allow(Jekyll).to receive(:env).and_return(jekyll_env) site.process end @@ -745,4 +747,30 @@ def to_s end end end + + context "with skip_development" do + let(:overrides) do + { + "feed" => { + "disable_in_development" => true + }, + } + end + + context "in production environment" do + let(:jekyll_env) { "production" } + + it "generates a feed as normal" do + expect(Pathname.new(dest_dir("feed.xml"))).to exist + end + end + + context "in development environment" do + let(:jekyll_env) { "development" } + + it "does not generate a feed" do + expect(Pathname.new(dest_dir("feed.xml"))).not_to exist + end + end + end end