如何在 ServerSpec 中不包含匹配器的情况下制作相同的工作代码

How can I make same working code without contain matcher in ServerSpec

describe file('/etc/checkfiles/server.cfg') do
  its(:content) {
    should contain("\/usr\/lib64\/nagios\/plugins\/check_procs -w 150 -c 200")
      .after(/command\[check_total_procs\]\=/)
  }
end

我像这段代码一样使用包含匹配器,但它会被淘汰。 'server.cfg' 中有很多行,我只想检查 1 行。 如何在不包含匹配器的情况下制作相同的工作代码?

docs注意:

Instead of contain, you can use its(:content) and any standard rspec matchers. The matcher contain will be obsoleted.

我倾向于说维护者可能没有正确考虑这个变化,你可能会建议他实际上不应该弃用这个特性。

尽管如此,使用正则表达式很容易解决这个问题:

describe file('/etc/checkfiles/server.cfg') do
  its(:content) {
    should match /command\[check_total_procs].*check_procs -w 150 -c 200/m
  }
end

使用多行正则表达式的关键见解 //m,允许您说文件中一个字符串接一个字符串。