【问题标题】:How can I syntax check (not render) a Rails 3 ERB template file?如何语法检查(不渲染)Rails 3 ERB 模板文件?
【发布时间】:2013-12-11 23:39:29
【问题描述】:

我正在尝试让 git 预提交挂钩对所有 Ruby 代码执行语法检查; GitHub 上有一个https://github.com/cypher/git-ruby-syntax-check

它尝试通过erb -x 检查 .erb 文件以将它们转换为 Ruby 代码,然后将输出传递给 ruby -c 进行语法检查。不幸的是,Rails 3 引入了一个自定义 ERB 解析器,即 incompatible 和 Ruby 的标准 ERB,因此 pre-commit 钩子会在没有错误的地方找到错误。

是否有与erb -x 等效的方法可以从 Rails 3 ERB 文件中输出 Ruby 代码?

【问题讨论】:

  • 如果您测试所有视图,则不需要此检查验证。
  • @shingara 我不同意。这 一种测试视图的方法,而其他测试则不能。无效的标记可能会通过您的功能测试,因为浏览器会为您“修复”它,但仍然会留下细微的错误,或导致未来的问题,因为没有测试是 100% 全面的。
  • @shingara 或者您说的是“渲染后验证,而不是之前验证”而不是“根本不验证”?在这种情况下,我明白你的意思(而且我可以看到一个论点:-)
  • 这很有用。除了更全面的功能测试之外,它还可以用于非常快速的健全性检查。

标签: ruby-on-rails ruby-on-rails-3 erb


【解决方案1】:

我没有深入研究其中任何一个,但您可以尝试rails-erb-check (Git project) 或这个blog entry。我同意 shingara 的观点,但博客文章描述了一种有用的情况,我想知道您是否处于类似的位置:

侨民现在非常流动。这意味着我们有一些绿色 测试、一些缺失的测试和其他检查意图的测试(不是 执行)。在一个理想的世界里,我想测试用例会涵盖 我们所有的基地...

在那之前,我已经在我的 fork 中添加了一个新任务 check_syntax:all。这个 进一步分解为子任务 check_syntax:erb, check_syntax:haml、check_syntax:haml_ruby、check_syntax:sass 和 check_syntax:yaml。

【讨论】:

    【解决方案2】:

    如果您收到 rails-erb-check 的“参数列表太长错误”,您可以尝试rails-erb-lint,它会扫描您当前的视图文件夹。

    【讨论】:

    • 与公认的答案相比,此工具很有意义,因为它提供了扫描整个文件夹而不是一次扫描单个文件的功能。
    • 维护得很好。我们至少有两个人在管理这个项目。不管它有多小,它都会一直工作。
    • 运行时出现以下错误:private method desc' 调用 main:Object`。无论我在哪个目录中以及我通过了哪些选项。在 Rails 5.2 上。
    猜你喜欢
    • 2011-05-14
    • 2014-01-24
    • 2012-12-31
    • 2012-06-03
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多