Watir меняет метод запроса хайлайна

Я обнаружил некоторые странные функции при совместном использовании 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, что

Если @question задан до вызова ask(), параметры игнорируются, и этот объект (должен быть HighLine::Question) вместо этого используется для управления процессом.

Извините, я не рубиновый гуру :-(


person grundic    schedule 25.05.2010    source источник
comment
Что делаешь? В чем проблема? Что такое Хайлайн?   -  person Željko Filipin    schedule 26.05.2010


Ответы (1)


Подтвержденный. Это действительно так себя ведет.

Желько: http://highline.rubyforge.org/

grundic: проблема связана не с самим Watir, а с другой библиотекой s4t-utils (http://s4t-utils.rubyforge.org/), который также имеет метод «аск», который ведет себя аналогично «аск» HighLine. s4t-utils зависит от гема «выбор пользователя», который, в свою очередь, зависит от «commonwatir», который является зависимостью Watir. Итак, после того, как вы выдаете «require 'watir'», загружается s4t-utils, поэтому метод «ask» переопределяется.

Вы можете использовать HighLine.new.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

Ярмо Пертман

person Jarmo Pertman    schedule 28.05.2010