Skip to content

Commit aa9ae0e

Browse files
authored
Allow disabling of jekyll-feed while in development (#370)
Merge pull request 370
1 parent 423ca21 commit aa9ae0e

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

.rubocop.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ Layout/LineEndStringConcatenationIndentation:
1616

1717
Lint/EmptyInPattern:
1818
Enabled: false
19+
20+
Metrics/AbcSize:
21+
IgnoredMethods:
22+
- generate # in generator.rb
1923

2024
Naming/InclusiveLanguage:
2125
Enabled: false

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,16 @@ feed:
246246

247247
Note that if you include a tag that is excluded a feed will not be generated for it.
248248

249+
## Skip development
250+
251+
Use `disable_in_development: true` if you want to turn off feed generation when `jekyll.environment == "development"`,
252+
but don't want to remove the plugin (so you don't accidentally commit the removal). Default value is `false`.
253+
254+
```yml
255+
feed:
256+
disable_in_development: true
257+
```
258+
249259
## Contributing
250260

251261
1. Fork it (https://github.com/jekyll/jekyll-feed/fork)

lib/jekyll-feed/generator.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ class Generator < Jekyll::Generator
88
# Main plugin action, called by Jekyll-core
99
def generate(site)
1010
@site = site
11+
if disabled_in_development?
12+
Jekyll.logger.info "Jekyll Feed:", "Skipping feed generation in development"
13+
return
14+
end
1115
collections.each do |name, meta|
1216
Jekyll.logger.info "Jekyll Feed:", "Generating feed for #{name}"
1317
(meta["categories"] + [nil]).each do |category|
@@ -137,5 +141,9 @@ def normalize_posts_meta(hash)
137141
config["path"] ||= hash["posts"]["path"]
138142
hash
139143
end
144+
145+
def disabled_in_development?
146+
config && config["disable_in_development"] && Jekyll.env == "development"
147+
end
140148
end
141149
end

spec/jekyll-feed_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
let(:contents) { File.read(dest_dir("feed.xml")) }
2626
let(:context) { make_context(:site => site) }
2727
let(:feed_meta) { Liquid::Template.parse("{% feed_meta %}").render!(context, {}) }
28+
let(:jekyll_env) { "development" }
2829
before(:each) do
30+
allow(Jekyll).to receive(:env).and_return(jekyll_env)
2931
site.process
3032
end
3133

@@ -745,4 +747,30 @@ def to_s
745747
end
746748
end
747749
end
750+
751+
context "with skip_development" do
752+
let(:overrides) do
753+
{
754+
"feed" => {
755+
"disable_in_development" => true
756+
},
757+
}
758+
end
759+
760+
context "in production environment" do
761+
let(:jekyll_env) { "production" }
762+
763+
it "generates a feed as normal" do
764+
expect(Pathname.new(dest_dir("feed.xml"))).to exist
765+
end
766+
end
767+
768+
context "in development environment" do
769+
let(:jekyll_env) { "development" }
770+
771+
it "does not generate a feed" do
772+
expect(Pathname.new(dest_dir("feed.xml"))).not_to exist
773+
end
774+
end
775+
end
748776
end

0 commit comments

Comments
 (0)