【发布时间】:2020-11-08 14:20:51
【问题描述】:
我们多年来一直致力于开发静态 HTML 网站构建器 Middleman。在最近的一次升级之后,我们遇到了一个让我们整个团队都陷入困境的问题。在 config.rb 中,所有 proxy 调用都可以正常工作,直到我们尝试运行这样的嵌套循环:
data.site.datatype.each do | id, c |
puts c
data.site.datatype.each do | id, c2 |
puts c2
end
end
[注意 data.site.datatype 是使用 middleman-contentful 导入的 .yaml 文件。]
行为是外循环运行良好,但内循环拒绝执行。
外循环(puts c)的输出显示了 .yaml 有效负载的中间人导入,如下所示:
#<Middleman::Util::EnhancedHash id="id-1" name="comp1" slug="comp1">
#<Middleman::Util::EnhancedHash id="id-2" name="comp2" slug="comp2">
我们已经在这个问题上停留了一周,因此非常欢迎任何指导!
Gemfile如下:
source 'https://rubygems.org'
gem 'middleman', '~> 4.2'
gem 'middleman-autoprefixer', '~> 2.7'
gem 'tzinfo-data', platforms: [:mswin, :mingw, :jruby, :x64_mingw]
gem 'wdm', '~> 0.1', platforms: [:mswin, :mingw, :x64_mingw]
gem 'middleman-dotenv', '~> 2.0'
gem 'contentful_middleman', '~> 4.2.0'
否则 config.rm 有 activate :dotenv 和 activate :contentful
我们已返回https://middlemanapp.com/advanced/dynamic-pages/,但找不到任何有用的信息。
【问题讨论】:
-
如果您使用的是现代 Ruby 版本,请使用带有
binding.pry或binding.irb的调试器。把它放在puts c之后,当你点击绑定时,尝试以交互方式评估它。 -
感谢您的建议。是的,我可以在外部循环中包含 binding.irb,它返回与 puts 命令相同的信息。如果我将 binding.irb 放在内部循环中,则执行永远不会进入交互式会话,因此它不会产生任何额外的洞察力。即使以交互方式遍历脚本,内部循环也会被跳过。
-
一位顾问建议用
@app.data.site.datatype.each替换data.site.datatype.each- 这似乎工作正常。我们仍在对该网站进行完整的测试,但到目前为止,上帝 - 这似乎已经解决了这个问题。 -
如果您将
binding.irb放在puts c之后,然后手动输入data.site.datatype.each do ...会发生什么?
标签: ruby middleman contentful