Cucumber步骤定义文件无法使用关键字puts,该关键字puts在同一项目的ruby类中被重写

Cucumber步骤定义文件无法使用关键字puts,该关键字puts在同一项目的ruby类中被重写,ruby,cucumber,gherkin,Ruby,Cucumber,Gherkin,我有一个步骤定义文件,它有以下行 puts "Beginning step execution" 在一个单独的文件(不是一个名为helper.rb的ruby类)中,我有一个overidden put,因此我可以输出带有时间戳的put,如下所示 def puts(o) timenow = Time.now if o.is_a? Array msg = timenow.to_s+" OUT: "+o.to_s else msg = timenow.to_s+" OUT:

我有一个步骤定义文件,它有以下行

puts "Beginning step execution"
在一个单独的文件(不是一个名为helper.rb的ruby类)中,我有一个overidden put,因此我可以输出带有时间戳的put,如下所示

def puts(o)
  timenow = Time.now
  if o.is_a? Array
    msg = timenow.to_s+" OUT: "+o.to_s
  else
    msg = timenow.to_s+" OUT: "+o
  end
  super(msg.black)
end
我得到的错误是


2015-06-30 14:44:59+0100 OUT:错误:未定义的方法您在错误消息中有时间和单词OUT。。。看起来你的puts覆盖工作正常。有什么东西在一个不相关的错误后用这些字符串调用puts?输出错误/回溯的代码不是puts,而是我们的助手类中另一个自定义重写的方法,名为PUTE,我在上面以它为例介绍了这个方法。因此,是的,覆盖在任何情况下都可以正常工作,除了方法名为PUTS??我可以很容易地解决这个问题,但是我必须重构我的很多步骤定义文件。我不想这样做,直到我能理解为什么这似乎是突然发生的,只有在一些机器上?
 def pute(o)
  timenow = Time.now
  if o.is_a? Array
    msg = timenow.to_s+" OUT: "+o.to_s
  else
    msg = timenow.to_s+" OUT: "+o
  end
  Kernel.puts(msg.red)
end
def warn(o)
  p "entered warn in gui_helper"
  timenow = Time.now
  if o.is_a? Array
    msg = timenow.to_s+" OUT: "+o.to_s
  else
    msg = timenow.to_s+" OUT: "+o
  end
  super(msg.black)
end