这里文档给出了 Ruby IO 中的 EOF 错误

Here document gives EOF error in Ruby IO

提问人:Akshansh Gupta 提问时间:10/24/2015 更新时间:10/26/2015 访问量:1063

问:

以下代码给出了两个我无法解决的错误。任何帮助将不胜感激:

random.rb:10: can't find string "TEMPLATE" anywhere before EOF
random.rb:3: syntax error, unexpected end-of-input

法典:

id = 2
File.open("#{id}.json","w") do |file|
file.write <<TEMPLATE
{
         "submitter":"#{hash["submitter"]}",
         "quote":"#{hash["quote"]}",
         "attribution":"#{hash["attribution"]}"
       }
       TEMPLATE
   end
红宝石 字符串 io eof

评论

0赞 shivam 10/24/2015
什么?您是否在某处定义了它,或者您只是复制粘贴代码?TEMPLATE
0赞 Akshansh Gupta 10/24/2015
TEMPLATE 只是此处文档的占位符。

答:

2赞 cremno 10/24/2015 #1

从文档(强调我的):

heredoc 从以下行开始,以以 HEREDOC 开头的下一行结束<<HEREDOC

您的代码不包含以 开头的行。如果您的文本编辑器(或 IDE)在搜索中支持正则表达式,请尝试 。TEMPLATE^TEMPLATE

您可以删除空格,或者如果要保留空格,请更改为 .添加 of 会指示 Ruby 解析器搜索(可能)预期的,就像您在代码中所做的那样。<<TEMPLATE<<-TEMPLATE-TEMPLATE

评论

0赞 Akshansh Gupta 10/24/2015
非常感谢!实现更改后,代码工作正常。