gpt4 book ai didi

ruby - class << self、alias_method 和猴子修补 Mechanize::Cookie

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:13 24 4
gpt4 key购买 nike

我有一个关于 Mechanize::Cookie 行为不端的问题,我想尝试用猴子修补它。我的代码:

class Mechanize::Cookie
class << self; alias_method :old_parse, :parse end
def self.parse(uri, str, log = Mechanize.log)
puts 'new parse!'
#str.gsub!(/domain[^;]*;/,'')
old_parse(uri, str, log)
end
end

当我添加这个时,cookies 没有被添加,我不明白为什么。

编辑:要查看问题,请在使用和不使用猴子补丁的情况下尝试此代码:

agent = Mechanize.new
agent.get 'http://www.google.com/'
pp agent.cookie_jar

如果没有补丁,你会看到一个完整的 cookies jar ,里面是一个空的。

最佳答案

看起来原始的解析方法中有一个 yield cookie if block_given? 语句。您还需要能够通过障碍。

编辑:

更清楚...

class Foo
def self.x
yield "yielded from x!" if block_given?
end
end

class Foo
class <<self
alias :y :x
end
# new implementation of x's last parameter is an optional block
def self.x(&block)
puts "in redefined x."
puts "block=#{block}"
self.y(&block) #use the block as the last parameter
end
end

Foo.x{|value| puts "value is '#{value}'"}

关于ruby - class << self、alias_method 和猴子修补 Mechanize::Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com