4

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?

多分それはバグですか?ハイラインのドキュメントでも見つけました。

ask() が呼び出される前に @question が設定されている場合、パラメーターは無視され、そのオブジェクト (HighLine::Question である必要があります) が代わりにプロセスを駆動するために使用されます。

申し訳ありませんが、私はルビーの第一人者ではありません:-(

4

1 に答える 1

5

確認済み。本当にそのように振る舞います。

ジェリコ: http://highline.rubyforge.org/

grundic: この問題は Watir 自体には関係ありませんが、s4t-utils ( http://s4t-utils.rubyforge.org/ ) と呼ばれる別のライブラリに関連しています。このライブラリには、HighLine の "聞く"。s4t-utils は、Gem「user-choices」の依存関係であり、これは、Watir の依存関係である「commonwatir」に依存しています。そのため、「require 'watir'」を発行すると、s4t-utils がロードされ、「ask」メソッドがオーバーライドされます。

問題を解決するには、単に "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

ヤルモ・パートマン

于 2010-05-28T07:18:01.537 に答える