1

loop我有一个等待用户输入字符的命令行(shell) 。根据用户键入的内容,会发生不同的事情,但循环将始终继续,直到用户键入“退出”。只有一个命令,我想打开一个鞋子应用程序。打开工作正常,但是当我关闭它时,循环中断并且过程结束。我不希望这个过程结束。它看起来像这样......

def mainLoop()
  loop do
    print "Input word: "
    word = gets.chomp.split(' ')
    if word.length == 0
      launchShoesApp(word[0])
    end

    ...

  end
end

def create_gui(graph)
  Shoes.app { button "Push me" }
end

当 Shoes.app GUI 关闭时,整个过程关闭。我怎样才能防止这种情况?

4

1 回答 1

0

我宁愿建议将命令行 ruby​​ 脚本代码和 Shoes 脚本代码分开放在不同的文件中例如:

#command-line.rb
def mainLoop()
 loop do
  print "Input word: "
  word = gets.chomp.split(' ')
  if word.length == 0
   #launchShoesApp(word[0])
   Process.spawn("ruby shoes-gui.rb") 
   # this will spawn up a process (opening your shoes app) without blocking this ruby script.
  end
 end  
end

和,

#shoes-gui.rb
require 'green_shoes'
Shoes.app { button "Push me" }

确保两个文件都在同一个文件夹中。还要确保你已经安装了“green_shoes”gem。如果您对 green_shoes 完全不满意并且只想使用红色鞋子,您可以更改系统命令

from:
'ruby shoes-gui.rb'
to:
'yourpath/to/shoes shoes-gui.rb'

通常,如果您使用的是 linux,您会在 home/username/.shoes/federales/shoes 找到鞋子可执行文件,如果在 Windows 上,您会在 C 驱动器的某个位置找到可执行文件。

这应该很可能工作(我在我的机器上测试过)。希望能帮助到你 :)

于 2014-10-01T17:25:28.503 回答