gru*_*dic 4 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
Run Code Online (Sandbox Code Playgroud)
这是一个输出:
Company? |MySuperCompany|
MySuperCompany
[Company? ] =>
Company?
Run Code Online (Sandbox Code Playgroud)
也许这是一个错误?我也在highline的文档中找到了
如果在调用ask()之前设置了@question,则忽略参数,并使用该对象(必须是HighLine :: Question)来驱动进程.
对不起,我不是红宝石大师:-(
证实.它真的表现得那样.
Željko:http://highline.rubyforge.org/
grundic:问题与Watir本身无关,但它与另一个名为s4t-utils的库(http://s4t-utils.rubyforge.org/)有关,该库也有一个类似于HighLine的"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
Run Code Online (Sandbox Code Playgroud)
生产:
Company? |MySuperCompany| my
my
[Company? ] => my
my
Company? |MySuperCompany| my
my
Run Code Online (Sandbox Code Playgroud)
Jarmo Pertman