在松弛模式下液体引发SyntaxError

时间:2015-10-20 16:57:27

标签: ruby-on-rails ruby liquid

我试图设置Liquid gem,以便它不会引发语法错误的异常。根据{{​​3}},您可以设置不同的错误模式,如果设置了lax,它应该接受几乎任何""并且不会提出任何例外。即使我设置了该模式,也会引发异常,例如:

1.9.3-p551 :041 > Liquid::Template.error_mode = :lax
 => :lax
1.9.3-p551 :042 > Liquid::Template.error_mode
 => :lax
1.9.3-p551 :043 > Liquid::Template.parse("Thank you for your purchase at {{shop_name}")
Liquid::SyntaxError: Liquid syntax error: Variable '{{shop_name}' was not properly terminated with regexp: /\}\}/
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/block.rb:104:in `create_variable'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/block.rb:44:in `parse'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/tag.rb:10:in `parse'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/document.rb:5:in `parse'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/template.rb:122:in `parse'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/liquid-3.0.6/lib/liquid/template.rb:108:in `parse'
    from (irb):43
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/railties-3.2.17/lib/rails/commands/console.rb:47:in `start'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/railties-3.2.17/lib/rails/commands/console.rb:8:in `start'
    from /Users/david/.rvm/gems/ruby-1.9.3-p551/gems/railties-3.2.17/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

我错过了什么?

2 个答案:

答案 0 :(得分:0)

似乎你错过了第二个}

而不是

Liquid::Template.parse("Thank you for your purchase at {{shop_name}")

尝试

Liquid::Template.parse("Thank you for your purchase at {{shop_name}}")

答案 1 :(得分:0)

它实际上是expected behavior,在这种情况下你不能避免Liquid提出异常。 (以防万一有人遇到同样的问题,我没有关闭这个问题)