2013-02-26 52 views
1

我有一個等待用戶輸入字符的command_line(shell)loop。根據用戶輸入的內容,會發生不同的事情,但循環將一直持續,直到用戶鍵入「退出」。只有一個命令,我想打開一個鞋子的應用程序。打開工作正常,但當我關閉它時,循環中斷,過程結束。我不希望這個過程結束。它看起來像這樣...退出鞋子應用程序打破了我的循環!我怎樣才能防止這一點?

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關閉時,整個過程關閉。我怎樣才能防止這一點?

+0

我試圖從應用程序返回無濟於事......現在我試圖在一個線程中產生應用程序,一旦它完成後加入主線程。 – whittin36 2013-02-27 18:57:59

+0

線程結束了工作(部分)!我現在可以回到循環,但現在我只能打開鞋子應用一次。在循環中運行相同的命令繼續。 – whittin36 2013-02-27 19:05:02

回答

0

我寧願建議,以分離出命令行Ruby腳本代碼,並在不同的文件 的鞋腳本代碼例如:

#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'寶石。如果你不與green_shoes OK,想只用紅色的鞋子,在你可以更改系統命令

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

一般來說,你會發現鞋子在家裏/用戶名/ .shoes/federales /鞋如果可執行文件如果在Windows上,你正在使用Linux和C驅動器的某個地方。

這應該是最有可能的工作(我在我的機器上測試過)。希望它可以幫助:)

相關問題