【问题标题】:How to get output to show up in cmd window during Ruby script running (Windows 7)如何在 Ruby 脚本运行期间让输出显示在 cmd 窗口中(Windows 7)
【发布时间】:2011-08-05 15:59:58
【问题描述】:

红宝石 1.9.2 等待 1.8.1

我们从 cmd 提示符 (driver.rb) 启动我们的 ruby​​ 脚本。 ruby 脚本然后执行以下行以执行 cmd 提示命令:

response = `choice /c 12 /n /m "1. Qual -- 2. Test"`

我希望提示窗口显示允许用户做出选择然后返回选择的选项。

命令执行时,不显示消息,但cmd窗口正在等待响应。

当我输入值(1或2)时,它返回字符串

(/c 12 /n /m "1. Qual -- 2. Test x) 

x 是我选择的值。

当 ruby​​ 脚本执行完毕后,我会在 cmd 窗口中看到提示。

当我们运行时,ruby 脚本的任何输出(例如 puts)都会在脚本结束后显示。

有没有办法在 ruby​​ 运行时将输出转到 cmd 窗口,而不是等到运行结束或至少显示 cmd 提示符命令?

如果能在这件事上提供任何帮助,我将不胜感激。

【问题讨论】:

  • 我没有这个问题。我将(0..5).each { |i| puts i; sleep 1 } 放在一个ruby 文件中,然后在Windows 7 的cmd 中运行它,我每秒都会得到一个输出,而不是在运行结束时一次全部输出。
  • 你为什么要全力以赴执行选择?您可以使用 get 完美地使用纯红宝石,使用 Highline gem 甚至更好:rubygems.org/gems/highline
  • 如果您谈到您认为“选择”是答案的问题,也许会更容易为您提供帮助。为什么您希望某人在测试开始运行后选择 Qual 或 Test?有一些方法可以将参数传递给 ruby​​,或者大约一百万种其他方法可以在不在 dos 提示符下提问的情况下获得选项。
  • 我在上面的代码中没有看到任何Watir,为什么这个有Watir标签?

标签: ruby watir


【解决方案1】:

如果您需要或包含其他 ruby​​ 脚本,则会执行这些脚本中的代码。如果他们所做的只是定义类、方法等,那不是问题。但是,如果这些文件中存在不属于定义对象或方法的实际代码,它将在任何其他流控制等之前执行在你的主脚本中。

我不能肯定这是否是发生在您身上的事情,但听起来可能是这种情况,具体取决于您尝试构建事物的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2015-06-08
    • 2016-04-16
    相关资源
    最近更新 更多