我正在尝试在HTTP类中改进'get'方法但没有成功。
我期望在输出中得到'HTTP#get in Faker';但程序在Net :: HTTP中运行原始的'get'方法。
我们是否允许在Ruby 2.1中执行以下代码?
require 'net/http'
module Faker
refine Net::HTTP do
def self.get(dummy)
puts "HTTP#get in Faker"
end
end
end
using Faker
uri = URI('http://www.google.com')
x = Net::HTTP.get(uri)
答案 0 :(得分:1)
可以通过您要优化的类的singleton_class
来细化类方法:
require 'net/http'
module Faker
refine Net::HTTP.singleton_class do
def get(dummy)
puts "HTTP#get in Faker"
end
end
end
using Faker
uri = URI('http://www.google.com')
x = Net::HTTP.get(uri)
答案 1 :(得分:0)
我找到了解决问题的方法。
我们可以使用这个技巧改进类方法:
这里是:
require 'net/http'
include Net
module Faker
refine Class do
def HTTP.get(dummy)
puts "HTTP#get in M"
end
end
end
using Faker
uri = URI('http://www.google.com')
x = HTTP.get(uri)