【问题标题】:Ruby - Run external file in new windowRuby - 在新窗口中运行外部文件
【发布时间】:2019-01-25 20:48:18
【问题描述】:

我有一个 ruby​​ 脚本 (script1.rb):

puts "Hello world!"
puts "I am a script"

我有另一个脚本(scrip2.rb):

puts "I will run a separate script"
require 'script1.rb'
puts "I have finished."

我希望能够在新窗口中运行 script1.rb 并在 script1.rb 运行时让 script2.rb 仍然运行。

所以:Script2 提出“我将运行一个单独的脚本” 然后,它运行 script1 并输入“我已经完成”。同时 script1 正在 putsing 其文本。

我希望这是有道理的,并且有一个解决方案。

操作系统是Windows。

谢谢,里斯

【问题讨论】:

  • 您使用的是什么窗口系统? Ruby 没有“窗口”的概念,因此您需要使用一些外部库,这些库通常特定于窗口系统或桌面环境。例如,Motif 的工作方式与 Haiku 大不相同。
  • 使用Process.fork
  • kiddorails 说要使用Process.fork。只是问我如何将其应用于此?
  • 这是在 Windows 上吗?
  • 是的。尝试使用 Process.fork 在新窗口中运行另一个脚本

标签: ruby windows file external require


【解决方案1】:

Pure Ruby 实际上只是一种脚本语言,没有任何 GUI 组件或屏幕或窗口的概念。

但是在 Windows 上,并且不使用任何 GUI gem,您可以使用以下技巧使用新脚本创建一个新的 cmd.exe 命令提示符:

puts "I will run a separate script"
system('start cmd.exe /K ruby "some ruby script.rb"')
puts "I have finished."

这将在新的命令提示符窗口中将 Ruby 脚本 some ruby script.rb 作为新进程运行。也许这可以满足您的需求。

【讨论】:

  • 谢谢!你真的帮了大忙。如果没有任何麻烦,有什么方法可以将其用于名称中包含空格的文件?示例:script one.rb
  • 使用:system('start cmd.exe /K ruby "script with spaces.rb"')。请注意我如何将整个字符串括在单引号中,并使用双引号作为文件名。
  • 我明白了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多