Avoid caching resource when called via `include_relative` tag (#9784)
Merge pull request 9784
This commit is contained in:
parent
82efcc4c51
commit
07a01b0bc9
|
@ -58,3 +58,22 @@ Feature: include_relative Tag
|
||||||
Then I should get a zero exit status
|
Then I should get a zero exit status
|
||||||
And the _site directory should exist
|
And the _site directory should exist
|
||||||
And I should see "Welcome back Dear Reader!" in "_site/index.html"
|
And I should see "Welcome back Dear Reader!" in "_site/index.html"
|
||||||
|
|
||||||
|
Scenario: Include multiple files relative to a page at root
|
||||||
|
Given I have an "apple.md" page with foo "bar" that contains "{{ page.path }}, {{ page.foo }}"
|
||||||
|
And I have an "banana.md" page with content:
|
||||||
|
"""
|
||||||
|
{% include_relative apple.md %}
|
||||||
|
{% include_relative cherry.md %}
|
||||||
|
|
||||||
|
{{ page.path }}
|
||||||
|
"""
|
||||||
|
And I have an "cherry.md" page with foo "lipsum" that contains "{{ page.path }}, {{ page.foo }}"
|
||||||
|
When I run jekyll build
|
||||||
|
Then I should get a zero exit status
|
||||||
|
And the _site directory should exist
|
||||||
|
And I should see "<p>apple.md, bar</p>" in "_site/apple.html"
|
||||||
|
And I should see "<hr />\n<p>foo: bar" in "_site/banana.html"
|
||||||
|
And I should see "<hr />\n<p>foo: lipsum" in "_site/banana.html"
|
||||||
|
And I should see "<p>cherry.md, lipsum</p>" in "_site/cherry.html"
|
||||||
|
But I should not see "foo: lipsum" in "_site/cherry.html"
|
||||||
|
|
|
@ -249,6 +249,11 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
class IncludeRelativeTag < IncludeTag
|
class IncludeRelativeTag < IncludeTag
|
||||||
|
def load_cached_partial(path, context)
|
||||||
|
context.registers[:cached_partials] ||= {}
|
||||||
|
context.registers[:cached_partials][path] ||= parse_partial(path, context)
|
||||||
|
end
|
||||||
|
|
||||||
def tag_includes_dirs(context)
|
def tag_includes_dirs(context)
|
||||||
Array(page_path(context)).freeze
|
Array(page_path(context)).freeze
|
||||||
end
|
end
|
||||||
|
@ -267,6 +272,17 @@ module Jekyll
|
||||||
path = File.join(site.config["collections_dir"], path) if page["collection"]
|
path = File.join(site.config["collections_dir"], path) if page["collection"]
|
||||||
path.delete_suffix("/#excerpt")
|
path.delete_suffix("/#excerpt")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Since Jekyll 4 caches convertibles based on their path within the only instance of
|
||||||
|
# `LiquidRenderer`, initialize a new LiquidRenderer instance on every render of this
|
||||||
|
# tag to bypass caching rendered output of page / document.
|
||||||
|
def parse_partial(path, context)
|
||||||
|
LiquidRenderer.new(context.registers[:site]).file(path).parse(read_file(path, context))
|
||||||
|
rescue Liquid::Error => e
|
||||||
|
e.template_name = path
|
||||||
|
e.markup_context = "included " if e.markup_context.nil?
|
||||||
|
raise e
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue