Watir改变了highline的“ask”方法

时间:2010-05-25 08:50:56

标签: ruby watir highline

当我一起使用Watir和Highline时,我已经遇到了一些奇怪的功能。

这是一个简单的例子:

require 'highline/import'
comp = ask("Company?  ") { |q| q.default = "MySuperCompany" }
puts comp

require 'watir'
comp = ask("Company?  ") { |q| q.default = "MySuperCompany" }
puts comp

这是一个输出:

Company?  |MySuperCompany|
MySuperCompany
[Company?  ] =>
Company?

也许这是一个错误? 我也在highline的文档中找到了,

  

如果在ask()之前设置了@question   调用,参数被忽略   那个对象(必须是一个   HighLine :: Question)用于驱动   而不是过程。

对不起,我不是红宝石大师: - (

1 个答案:

答案 0 :(得分:5)

确认。它真的像那样。

Željko:http://highline.rubyforge.org/

grundic:问题与Watir本身无关,但它与另一个名为s4t-utils(http://s4t-utils.rubyforge.org/)的库有关,它也有一个类似于HighLine的“ask”的“ask”方法。 s4t-utils是gem“用户选择”的依赖,而后者依赖于“commonwatir”,这是Watir的依赖。所以,在你发出“require'watir'”之后,加载了s4t-utils,因此覆盖了“ask”方法。

您可以使用HighLine.new.ask而不是“ask”来解决问题:

require "highline/import"
comp = ask("Company?  ") { |q| q.default = "MySuperCompany" }
puts comp

require 'watir'
comp = ask("Company?  ") { |q| q.default = "MySuperCompany" }
puts comp

comp = HighLine.new.ask("Company?  ") { |q| q.default = "MySuperCompany" }
puts comp

产地:

Company?  |MySuperCompany|  my
my
[Company?  ] => my
my
Company?  |MySuperCompany|  my
my

Jarmo Pertman