2015-10-20 64 views
2

我正在尝试设置Liquid gem,因此它不会引发语法错误的异常。根据Liquid gem Readme page,您可以设置不同的错误模式,并且如果lax已设置,它应该接受“几乎任何事情”并且不会引发任何异常。即使我设置模式,将引发异常,例如:在松弛模式下提升SyntaxError

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>' 

我缺少什么?

回答

0

似乎你错过了第二个}

而不是

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

尝试

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

是的,我知道有一个语法错误,我想要做的是配置液体,以便它不会引发异常在那些错误。我编辑了这个问题,使其更清晰 – davids

0

这实际上是expected behavior,你不能避免在这种情况下液体引发异常。为了防止有人碰到相同的问题,我不是关闭这个问题)