2

有没有办法制作不尝试评估内部 #{} 的多行字符串?

我想要以下内容:

doc <<-DOC    
    describe "should get sysdate on test: #{test_name}" do
        it "should get SYSDATE" do
            conx_bd.sysdate.should_not == NULL
        end
    end    
DOC

用这个内容创建一个字符串(doc):(用于元编程)

describe "should get sysdate on test: #{test_name}" do
    it "should get SYSDATE" do
        conx_bd.sysdate.should_not == NULL
    end
end    

我收到此错误:

NameError: undefined local variable or method `test_name' for main:Object

如果用单引号括住heredoc标识符,如果字符串具有例如要求,我会收到此错误

doc <<'-DOC'
require "spec_helper.rb" # conexión oracle

describe "should get sysdate on test: #{test_name}" do
    it "should get SYSDATE" do
        conx_bd.sysdate.should_not == NULL
    end
end  

文档

错误:

LoadError: no such file to load -- spec_helper

tks

编辑:感谢您的支持,我从答案中得到了 2 个可能的解决方案。

首先,我在定义多行字符串时出错

doc <<-DOC should be <<-doc 
  1. scape # 与 \

    <<-doc
    描述“应该在测试中获取 sysdate:#{test_name}”做它“应该得到 SYSDATE”做 conx_bd.sysdate.should_not == NULL end end
    doc

  2. 用单引号将heredoc 标识符括起来

    <<-'doc'
    描述“应该在测试中获取 sysdate:#{test_name}”做它“应该得到 SYSDATE”做 conx_bd.sysdate.should_not == NULL end end
    doc

4

2 回答 2

3

用单引号将heredoc 标识符括起来。

doc <<-'DOC'    
    describe "should get sysdate on test: #{test_name}" do
        it "should get SYSDATE" do
            conx_bd.sysdate.should_not == NULL
        end
    end    
DOC

编辑我对单引号开头和连字符的相对位置是错误的。steenslag 是对的。固定的。

于 2012-10-18T21:31:53.917 回答
2

尝试在 # 之前使用转义字符。转义字符是\.

于 2012-10-18T21:29:43.940 回答