Ruby 为什么条件include会停止在Jekyll中工作,除非我添加了非空白字符?
我的基于Jekyll的网站突然停止使用Google Analytics脚本块。昨天,它还在工作(所有页面上都有脚本块),但今天,在我上传了一篇新文章后,所有页面上的脚本块都被统一删除了 我在GitHub页面上托管我的站点,所以为了解决问题,我想在本地机器上重现这个问题。原来我在本地机器上运行的是Ruby和Jekyll的旧版本,所以我更新了Ruby并安装了,以确保本地环境与GitHub页面匹配: gem安装github页面 这使我得以重现这个问题。现在,即使在我跑步的时候 杰基尔发球——安全 分析脚本块未包含在任何页面中 经过多次故障排除,我终于发现,如果我在JB/analytics文件中,在google case和include指令之间,添加任何类型的非空白字符,它都会起作用 因此,这是可行的,即当Ruby 为什么条件include会停止在Jekyll中工作,除非我添加了非空白字符?,ruby,jekyll,liquid,github-pages,Ruby,Jekyll,Liquid,Github Pages,我的基于Jekyll的网站突然停止使用Google Analytics脚本块。昨天,它还在工作(所有页面上都有脚本块),但今天,在我上传了一篇新文章后,所有页面上的脚本块都被统一删除了 我在GitHub页面上托管我的站点,所以为了解决问题,我想在本地机器上重现这个问题。原来我在本地机器上运行的是Ruby和Jekyll的旧版本,所以我更新了Ruby并安装了,以确保本地环境与GitHub页面匹配: gem安装github页面 这使我得以重现这个问题。现在,即使在我跑步的时候 杰基尔发球——安全 分析
--safe
开关打开时,JB/analytics providers/google
中的脚本块包括:
{% case site.JB.analytics.provider %}
{% when "google" %}
{% include JB/analytics-providers/google %}
(注意{%when“google”%}
之后的句点字符)
但是,这不起作用-即使使用--safe
开关,包含JB/analytics providers/google
的内容也不包括在内:
{% case site.JB.analytics.provider %}
{% when "google" %}
{% include JB/analytics-providers/google %}
虽然我有一个解决办法,但我非常希望能解释一下这种行为。这确实是液体的问题。但我无法用github页面当前的liquid版本2.5.5复制它 复制 这就是我在一次打听中尝试的:
# Load liquid 2.5.5
require 'liquid'
# Set up local file system to allow for includes
Liquid::Template.file_system = Liquid::LocalFileSystem.new( './' )
# Create template string
c = "{% case provider %}\n {% when 'google' %}\n {% include 'test' %}\n{% else %}\n else\n{% endcase %}"
# Create template
t = Liquid::Template.parse c
# Render
t.render( { 'provider' => 'google' } )
无论我使用的是\n
还是\r\n
行结尾,我都会得到预期的行为(=>“\n液体错误:在这种情况下没有这样的模板“测试”\n“
,因为我没有模板,但它正在调用include so…)
给出除'google'
以外的任何其他值都会触发else大小写并导致=>“\n else\n”
周期的增加只会通过包含点而影响输出,而不是是否触发包含
改善效果追踪
你能检查一下你的版本吗<代码>宝石列表液体和宝石列表杰基尔
你能复制你的网站并把它精简成一个简单的例子供我们使用吗?用所给的信息很难再现你所得到的
实验者须知
当在控制台中或从测试文件中执行Liquid时,请记住它喜欢将散列作为字符串,而不是符号。正在馈送
{provider:'google'}
以在=>“
中呈现上述结果。。。如果你的钥匙不是字符串,它就找不到。有趣的东西。。。看起来像液体中的虫子?你可能在Windows上吗?我遇到了各种各样的编码问题,包括\r\n
vs\n
。我现在使用专用的Debian VM进行发布,并使用Windows进行设计和发布。我甚至会在虚拟机上写一些帖子。是的,我在Windows上,但我很确定GitHub页面不是…迷人的。你能用一个退化的案例来创建一个显示这种行为的回购协议吗?