gpt4 book ai didi

ruby - 重新打开 Ruby 类的奇怪问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:14 26 4
gpt4 key购买 nike

我正在同时使用 Watir 和 Watir-WebDriver,并试图通过重新打开一些类和重新定义一些方法来使它们更加兼容。我遇到了无法解释的奇怪行为。我正在尝试了解发生了什么。

这发生在 watir-1.7.1 上,它只在 Windows 上可用。
ruby 1.8.7-p330
RUBYOPT=-rubygems

测试 1。

require 'watir'

Watir::ElementCollections.class_eval do
def new_method
end
end

>ruby open-classes-watir1.rb
open-classes-watir1.rb:3: uninitialized constant Watir::ElementCollections (NameError)

为什么 Ruby 会提示重新打开一个有效的类?

有问题的类如下所示:

element_collections.rb:

module Watir
#...
class ElementCollections
include Enumerable
#...
end
end

但这还不是全部!现在看这个:

测试 2。

require 'watir'

Watir::IE.class_eval do
end

Watir::ElementCollections.class_eval do # Requires the magic incantation above
def new_method
end
end

>ruby open-classes-watir2.rb

现在这个黑魔法咒语执行得很好。Watir::IE 看起来像这样:

ie-class.rb:

module Watir
class IE
include WaitHelper
include Exception
include Container
include PageContainer
#...
end
end

为什么?

最佳答案

不久前我做了一个视觉辅助。 http://www.flickr.com/photos/marekj/3615299778/要求'watir'来自commonwatir gemrequire 'watir/ie' 来自 watir gem。这里有两颗 gem 在起作用。

关于ruby - 重新打开 Ruby 类的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893923/

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