ruby - 覆盖反引号

标签 ruby operator-overloading backticks

所以我希望覆盖测试文件中的反引号,并将其应用于测试期间调用的所有脚本。测试文件使用了几个类(保存在其他文件中),当这些类使用反引号时,我在测试文件中的覆盖不适用。

例如以下是测试文件(tc_some_test.rb)

module BacktickURI
  def `(uri)
    # `untrick beautifier
    puts "uri = #{uri}\n"
    if uri =~ /some command/
      puts "command ran #{uri}\n"
    else
      system("#{uri} 2>&1")
    end
  end
end

include BacktickURI

对于 tc_some_test.rb 中使用的所有反引号,这有效,但调用的外部类和脚本仍然使用正常的、未覆盖的反引号。

感谢任何帮助。另一种方法是从一个脚本/文件中覆盖另一个脚本/文件中的方法。

最佳答案

输入 irb:

define_singleton_method '`' do |*| puts 'kokot' end

`ls`
#=> kokot

关于ruby - 覆盖反引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391054/

相关文章:

使用反引号编译 GTK-app cmd-windows

perl - 使用反引号调用的外部程序仍会产生输出

ruby - 如何在 Ruby 中知道文件是否已完全下载

c++ - 在 VS2008 中编译的代码不在 VS2013 中,const 重载

ruby - Ruby 中的 java 接口(interface)等价物是什么?

c++ - 在 C++ 中重载 = 运算符的具体案例

c# - 重载 operator== 并与 null 进行比较

mysql - CakePHP:反引号查询和普通查询的区别

ruby - 如何在一个接口(interface)上加入多个组播组

ruby-on-rails - 验证网址 |前置 http ://